【问题标题】:sending email via php mail function goes to spam [duplicate]通过php邮件功能发送电子邮件进入垃圾邮件[重复]
【发布时间】:2013-08-16 06:15:31
【问题描述】:

我在将邮件发送到我的收件箱(gmail 帐户)时遇到问题,但每次都进入垃圾邮件文件夹。

这里是代码sn-p

     //$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);
    }

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

你能找出问题所在吗?

【问题讨论】:

  • 据我所知,像 Yahoo! 这样的邮件提供商使用 PHP 将电子邮件发送到垃圾邮件文件夹。另外,我很高兴知道en.wikipedia.org/wiki/Sender_Policy_Framework
  • HTML 部分在其参数值被双引号括起来时有效:&lt;meta http-equiv="Content-Language" content="en-us"&gt; 像这样。

标签: phpmailer php email-spam


【解决方案1】:

小心您的测试。如果您在表单中输入与必须接收的电子邮件地址相同的电子邮件,它将直接在垃圾邮件中:)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      尝试将您的标题更改为:

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

      【讨论】:

      • 嗨 Fred 尝试了您建议的更改,但没有解决问题。还有其他想法吗?
      • 如果撇号是指单引号:stackoverflow.com/questions/3446216/… $from 在该脚本中会做什么?
      • @Lenin 我称它们为撇号。例如,我现在刚刚使用了一个。至于“单引号”是我/键盘上的同一个字符。
      • 好的,我刚刚添加了 $from 变量用于测试目的,例如在 php 邮件函数中传递第五个参数。
      • 嗨@DineshNagar。很奇怪。我之前在标题中使用了单引号,它们总是落在垃圾邮件框中。当我切换到双引号时,一切都很好。
      【解决方案4】:

      我们通常对电子邮件执行的操作是使用 Gmail 作为 smtp 服务器或 Mandrill 作为 smtp 服务器,以防止垃圾邮件文件夹作为最终目的地。

      【讨论】:

        【解决方案5】:

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

        当今的电子邮件客户端和服务器对电子邮件发送服务器执行大量检查,例如反向 DNS 查找、灰名单和其他什么。所有这些测试都将因 php mail() 函数而失败。如果你使用的是动态ip,那就更糟了。

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

        https://github.com/PHPMailer/PHPMailer

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2022-01-09
            • 1970-01-01
            • 2017-03-29
            • 2014-12-21
            • 2019-05-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多