电子邮件附件垃圾邮件

时间:2013-08-05 10:46:53

标签: php

我正在使用代码发送带有附件的电子邮件,电子邮件发送但事情就是垃圾邮件。任何人都可以猜出原因吗?这是我的代码:

$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';
}

2 个答案:

答案 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;

它看起来不会产生太大的影响,而且从眼睛看,它没有任何区别,但它确实对过滤器产生了影响。

要做的最好的事情就是让电子邮件也被传送到“查看原始邮件”,在这里您可以获得电子邮件的完整代码,通常会在邮件头中提供垃圾邮件分数以及哪些邮件测试失败,您需要做些什么来修复要通过的电子邮件。