我正在使用代码发送带有附件的电子邮件,电子邮件发送但事情就是垃圾邮件。任何人都可以猜出原因吗?这是我的代码:
$to = 'krishna25@gmail.com';
$subject = 'PHP Mail Attachment Test';
$bound_text = "jimmyP123";
$bound = "--".$bound_text."\r\n";
$bound_last = "--".$bound_text."--\r\n";
$headers = "From: admin@server.com\r\n";
$headers .= "MIME-Version: 1.0\r\n"
."Content-Type: multipart/mixed; boundary=\"$bound_text\"";
$message .= "If you can see this MIME than your client doesn't accept MIME types!\r\n"
.$bound;
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"
."Content-Transfer-Encoding: 7bit\r\n\r\n"
."hey my <b>good</b> friend here is a picture of regal beagle\r\n"
.$bound;
$file = file_get_contents("http://reality.com/images/ezlogo.png");
$message .= "Content-Type: image/png; name=\"http://reality.com/images/ezlogo.png\"\r\n"
."Content-Transfer-Encoding: base64\r\n"
."Content-disposition: attachment; file=\"http://reality.com/images/ezlogo.png\"\r\n"
."\r\n"
.chunk_split(base64_encode($file))
.$bound_last;
if(mail($to, $subject, $message, $headers))
{
echo 'MAIL SENT';
} else {
echo 'MAIL FAILED';
}
答案 0 :(得分:1)
在您的代码中,您显示了“发件人”地址,如下所示:
$headers = "From: admin@server.com\r\n";
确保这是您正在使用的有效地址。
此外,您可以尝试设置其他标头,例如 Return-Path 和 Reply-To
$header .= "Reply-To: Admin <admin@server.com>\r\n";
$header .= "Return-Path: Admin <admin@server.com>\r\n";
来源 - http://www.transio.com/content/how-pass-spam-filters-php-mail
希望这有帮助!
答案 1 :(得分:1)
垃圾邮件过滤器的重要标志是发送html内容而没有格式良好的HTML主体。
即。你有一个部分
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"
."Content-Transfer-Encoding: 7bit\r\n\r\n"
."hey my <b>good</b> friend here is a picture of regal beagle\r\n"
.$bound;
您需要设置:
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"
."Content-Transfer-Encoding: 7bit\r\n\r\n"
."<html><head></head><body>hey my <b>good</b> friend here is a picture of regal beagle</body></html>\r\n"
.$bound;
它看起来不会产生太大的影响,而且从眼睛看,它没有任何区别,但它确实对过滤器产生了影响。
要做的最好的事情就是让电子邮件也被传送到“查看原始邮件”,在这里您可以获得电子邮件的完整代码,通常会在邮件头中提供垃圾邮件分数以及哪些邮件测试失败,您需要做些什么来修复要通过的电子邮件。