Gmail电子邮件ID:saket.mishra@atlascorps.org未通过PHP邮件功能收到邮件

时间:2014-09-23 16:08:55

标签: php email gmail sendmail

我正在使用以下代码发送无论何时注册的电子邮件。

$recmail = 'saket.mishra@atlascorps.org'; // address you want the form mailed to
    $sub = "Atlas Corps Questionnaire"; //subject of email that is sent
    $mess = "Hello, Please fill a questionnaire at following link. ";

    $headers = "From: Atlas Corps Family Tree  < info@atlascorps.org > \n" . 
               "MIME-Version: 1.0\n" .
               "Content-type: text/html; charset=iso-8859-1";

    mail($recmail,$sub,$mess,$headers);

我的saket.mishra@atlascorps.org是一个有效的Gmail帐户。 但我在这里没有收到任何电子邮件。 我已经正确检查了我所有的gmail设置。 不应用转发和过滤。

我的其他Gmail帐户:saket.me@gmail.com 是通过本网站接收所有电子邮件。

请提供帮助,因为我的所有客户都会在Gmail上拥有 @ atlascorps.org 电子邮件帐户。

在服务器的电子邮件日志中,有以下消息

Return-path: <>
Envelope-to: atlascorpsadmin@p3plcpnl0096.prod.phx3.secureserver.net
Delivery-date: Tue, 23 Sep 2014 08:56:11 -0700
Received: from mailnull by p3plcpnl0096.prod.phx3.secureserver.net with local (Exim 4.82)
    id 1XWSRn-0003Fc-2A
    for atlascorpsadmin@p3plcpnl0096.prod.phx3.secureserver.net; Tue, 23 Sep 2014 08:56:11 -0700
X-Failed-Recipients: saket.mishra@atlascorps.org
Auto-Submitted: auto-replied
From: Mail Delivery System <Mailer-Daemon@p3plcpnl0096.prod.phx3.secureserver.net>
To: atlascorpsadmin@p3plcpnl0096.prod.phx3.secureserver.net
Subject: Mail delivery failed: returning message to sender
Message-Id: <E1XWSRn-0003Fc-2A@p3plcpnl0096.prod.phx3.secureserver.net>
Date: Tue, 23 Sep 2014 08:56:11 -0700

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  saket.mishra@atlascorps.org


------ This is a copy of the message, including all the headers. ------

Return-path: <atlascorpsadmin@p3plcpnl0096.prod.phx3.secureserver.net>
Received: from atlascorpsadmin by p3plcpnl0096.prod.phx3.secureserver.net with local (Exim 4.82)
    (envelope-from <atlascorpsadmin@p3plcpnl0096.prod.phx3.secureserver.net>)
    id 1XWSRm-0003FX-Vo
    for saket.mishra@atlascorps.org; Tue, 23 Sep 2014 08:56:11 -0700
To: saket.mishra@atlascorps.org
Subject: Atlas Corps Questionnaire
X-PHP-Script: atlascorps.org/globe/send_link.php for 122.176.7.34
X-PHP-Originating-Script: 209330:send_link.php
From: Atlas Corps Family Tree  < info@atlascorps.org > 
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
Message-Id: <E1XWSRm-0003FX-Vo@p3plcpnl0096.prod.phx3.secureserver.net>

Hello

2 个答案:

答案 0 :(得分:1)

我建议您查看DNS设置,主要是您的SPF记录。如果您使用SPF checks的kitterman工具,则会发现您的SPF记录似乎无效:

Input accepted, querying now...
evaluating v=spf1 a mx ptr include:secureserver.net ~all ...
Results - PermError SPF Permanent Error: Too many DNS lookups

我的猜测是谷歌有时无法解析所有secureserver.net条记录,因此它会反弹一些消息。而不是include:secureserver.net尝试删除它并设置指向您的服务器的MX记录。 SPF记录设置为允许所有MX条记录发送电子邮件,因此应该可以正常工作。

另外,我建议使用诸如SwiftMailer之类的邮件程序库,它比默认的php mailer函数更容易维护和调试。这是一个片段代码,可以帮助您领先一步:

require_once '/path/to/swift-mailer/lib/swift_init.php';

// Create the message
// http://swiftmailer.org/docs/messages.html
$message = Swift_Message::newInstance();
$message->setFrom('info@atlascorps.org', 'Atlas Corps Family Tree');
$message->setTo('saket.mishra@atlascorps.org');
$message->setContentType('text/html');
$message->setCharset('iso-8850-1');
$message->setSubject('Atlas Corps Questionnaire');
$message->setBody('<html><head></head><body>Hello, Please fill a questionnaire at following <a href="http://domain.com/link.php?time='.time().'">link</a>.</body></html>');


// Create the Transport
// http://swiftmailer.org/docs/sending.html#the-smtp-transport
$transport = Swift_SmtpTransport::newInstance('localhost', 25);

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
$mailer->send($message);

希望这有帮助。

答案 1 :(得分:1)

您的邮件服务器(exim)将包含日志文件,可能位于/var/log/mail/log或附近,这将提供有关您的送货失败原因的更多详细信息。不幸的是,您发布的退回信息并不包含任何有用的信息。

扩展tftd的答案:

10个查找中的{p> RFC4408 imposes a limit个。对SPF查找计数here进行了很好的分析。 SPF中的杀手条款为mx,因为它列出了5个邮件服务器。 secureserver.net的SPF记录只包含ip4子句,因此不会产生任何额外的查找。在SPF中,您真的不需要ptr(并且您无论如何都没有DNS条目),这样可以保存查询,因为您的a记录是只有一个IP,最好先明确列出。我建议您将SPF更改为最小化查找次数:

v=spf1 ip4:192.186.207.194 include:secureserver.net mx a ~all

我已将a留在那里,以防您更改IP并忘记更新此记录...

所有这一切,这并不一定意味着您的SPF阻止了交付,因为邮件服务器会在找到匹配时停止检查SPF条目,如果它与您的某个MX相匹配在查找限制之前。