尝试创建一个脚本,我可以在其中发送带附件的电子邮件。一切正常,除了当我不在电子邮件中添加文件时,我仍然可以看到带有 0B 且没有名称的附件。
if(isset($_POST["my_send"])){
$email_to = $_POST['my_email_to']; //required
$email_from = "myemail@example.co.uk"; // required
$subject = $_POST['my_subject']; // not required
$comments = $_POST['write_my_email']; // required
$email_message .= stripcslashes("$comments");
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
$filename = $_FILES['file']['name'];
// create email headers
$headers = 'From: '.$email_from."\r\n".
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"_1_$boundary\"\r\n";
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
$message="This is a multi-part message in MIME format.
--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"
--_2_$boundary
Content-Type: text/plain; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 7bit
$email_message
--_2_$boundary--
--_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
$attachment
--_1_$boundary--";
mail($email_to, $subject, $message, $headers);
echo "<h5>Thanks, your email was sent successfully!</h5>";
}
我做错了什么?有什么建议吗?
最佳答案
没有附件就排除这个:
--_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
$attachment
--_1_$boundary--
例如,仅在文件名不为空时将其附加到$message
:
$message = "This is a multi-part message in MIME format.
--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"
--_2_$boundary
Content-Type: text/plain; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 7bit
$email_message";
if (!empty($filename))
{
$message .= " --_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
$attachment
--_1_$boundary--";
}
关于PHP - 发送带附件的电子邮件不显示邮件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30818263/