通过php邮件功能发送电子邮件转为垃圾邮件

时间:2013-08-14 10:28:33

标签: phpmailer php email-spam

我在向收件箱(gmail帐户)发送邮件时遇到问题,但每次进入垃圾邮件文件夹时都会遇到问题。 这是代码段

     //$ticketDetail is array which contain required information to send.
       sendOwnershipEmail('dineshnagarscriet@gmail.com', $ticketDetail);

       function sendOwnershipEmail($email, $ticketDetail) {
            $param = new stdClass();


$param->content = "<div>
    <div><b>".$ticketDetail[0]['ticket_number']."</b></div><br/>
    <div><img src='".$ticketDetail[0]['image_path']."'/></div><br/>
    <div>Ticket with ticket number ".$ticketDetail[0]['ticket_number']." has been requested for tranfer from <div/>
    <div>".$ticketDetail[0]['oldDepartment']." to ".$ticketDetail[0]['newDepartment']." Department <div/>
  </div>";

            $param->sendTo = $email;
            $param->subject = "Request for Department transfer";

        sendMailFunction($param);
    }


    function sendMailFunction($param) {
            $to = $param->sendTo;
            $subject = $param->subject;
            $headers = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'From: successive.testing@gmail.com' . "\r\n";
            $message = "<html><head>" .
                   "<meta http-equiv='Content-Language' content='en-us'>" .
                   "<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>" .
                   "</head><body>" .$param->content.        
                   "<br><br></body></html>";
          mail($to, $subject, $message, $headers);
    }

我尝试过将标题设置为Reply-To,Return-Path等,但每次都是垃圾邮件。 请问你能弄明白这个问题吗?

6 个答案:

答案 0 :(得分:26)

问题很简单,PHP-Mail功能没有使用配置良好的SMTP服务器。

现在,电子邮件客户端和服务器对发送服务器的电子邮件执行大量检查,例如反向DNS查找,灰名单和whatevs。所有这些测试都将失败,使用php mail()函数。如果您使用动态IP,则更糟糕。

使用PHPMailer-Class并将其配置为使用smtp-auth以及配置良好的专用SMTP服务器(本地SMTP服务器或远程服务器),您的问题就会消失。

https://github.com/PHPMailer/PHPMailer

答案 1 :(得分:14)

尝试将标题更改为:

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: successive.testing@gmail.com" . "\r\n" .
"Reply-To: successive.testing@gmail.com" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

有几个原因。

  • 其中一个是需要Reply-To

  • 使用撇号而不是双引号。根据我对表单的体验,这两件事通常会触发垃圾邮件框中的邮件。

您也可以尝试将$from更改为:

$from = "successive.testing@gmail.com";


编辑:

请参阅我在主题https://stackoverflow.com/a/9988544/1415724https://stackoverflow.com/a/16717647/1415724以及https://stackoverflow.com/a/9899837/1415724

上找到的这些链接

https://stackoverflow.com/a/5944155/1415724https://stackoverflow.com/a/6532320/1415724

  • 尝试使用ISP的SMTP服务器。

    使用这显然适用于许多人:X-MSMail-Priority: High

http://www.webhostingtalk.com/showthread.php?t=931932

“我的主机帮助我在我的域上启用DomainKeys和SPF记录,现在当我向我的Hotmail地址发送测试消息时,它不会在垃圾邮件中结束。 实际上,在电子邮件身份验证下的cPanel中启用这些设置非常容易。我简直不敢相信我以前从未见过。 它只适用于使用phpmailer通过SMTP发送。任何其他方式它仍被标记为垃圾邮件。“

PHPmailer在hotmail中向垃圾邮件发送邮件。怎么修 http://pastebin.com/QdQUrfax

答案 2 :(得分:4)

如果您通过自己的邮件服务器发送此邮件,则可能需要添加一个“发件人”标头,其中包含您自己域名的电子邮件地址。 Gmail可能会向该电子邮件发送垃圾邮件,因为FROM地址是一个Gmail地址,但尚未从他们自己的服务器发送。

答案 3 :(得分:2)

我们通常使用电子邮件阻止垃圾邮件文件夹作为最终目的地,使用Gmail作为smtp服务器或使用Mandrill作为smtp服务器。

答案 4 :(得分:0)

我观察到的一件事很可能是您提供的电子邮件地址不是域中的有效电子邮件地址。就像Nobody@gmail.com。该电子邮件应存在于Google域中。在弄清楚自己之前,我遇到了很多问题……希望能有所帮助。

答案 5 :(得分:-1)

请谨慎进行测试。如果您使用表格,则将与必须接收的电子邮件地址相同的电子邮件地址直接放入垃圾邮件:)