这是仅发送附件的php代码
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_to_upload']['tmp_name'])));
$filename = $_FILES['file_to_upload']['name'];
$boundary =md5(date('r', time()));
$headers = "From: $from \r\nReply-To: $from ";
$headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\"";
$body.="This is a multi-part message in MIME format.
--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"
--_2_$boundary
Content-Type: text/html; charset=\"UTF-8\"
Content-Transfer-Encoding: 7bit
--_2_$boundary--
--_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
$attachment
--_1_$boundary--";
它在发送附件时起作用,但是当用户不想选择任何附件时,它将在电子邮件中发送一些Part2.bin文件。如何克服呢?未选择文件时不发送任何内容
答案 0 :(得分:0)
可以在HTML中设置表单控件,以用required attribute标记时需要。
当表单控件(例如 HTML元素)被标记为必填项时,除非用户设置值,否则不会提交该表单用于操作。
以上内容有助于防止在没有用户选择文件的情况下在客户端提交表单。
在事物的服务器端方面,文件的全局$_FILES
将包含一个“错误”密钥,当没有错误时,该密钥将设置为0
(UPLOAD_ERR_OK
)。
可以检查的错误代码为documented here
您可以通过以下方式对此进行检查:
if ($_FILES["file_to_upload"]["error"] === UPLOAD_ERR_OK) {
// send email
} else {
// don't send email
}
没有文件上传的情况的特殊情况也为真。
if ($_FILES["file_to_upload"]["error"] === UPLOAD_ERR_NO_FILE) {
// don't send email
} else {
// send email
}