通过php邮件功能发送电子邮件进入垃圾邮件

2022-08-30 14:51:19

我在将邮件发送到我的收件箱(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);
    }

我已经尝试了很多,比如将标题设置为回复,返回路径等,但每次它都会变成垃圾邮件。

你能找出问题所在吗?


答案 1

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

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

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

https://github.com/PHPMailer/PHPMailer


答案 2

请尝试将标头更改为以下内容:

$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/1415724 和 https://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


推荐