如何解决mail失败,但返回true
| 我正在尝试在服务器上使用phpmail()
函数。很奇怪,它返回true,但是我的电子邮件收件箱中什么也没有收到。
但是,cpanel电子邮件转发器工作正常。
因此,这不是配置的事情,因为转发器向我发送电子邮件了吗?
我尝试添加:
ini_set(\"sendmail_from\",\"do-not-reply@gmail.com\");
但这没有用。
这是我的代码:
$subject = \"My Subject\";
$body = \"Email Body \";
$headers = \'From: do-not-reply@domain.com\' . \"\\r\\n\" .
\'Reply-To: do-not-reply@domain.com\' . \"\\r\\n\" .
\'X-Mailer: PHP/\' . phpversion();
if (mail($email,$subject,$body,$headers))
echo \"Sent!\";
else
echo \"Fail!\";
解决方法
有许多原因可能导致此问题。这里有一些:
该邮件已收到,但被标记为垃圾邮件。
收件人的地址不正确。
发送邮件服务器上的邮件队列很慢。
接收邮件服务器上的邮件队列很慢。
当外发邮件服务器接受邮件进行传递时,“ 0”返回true。您将需要对其他可能性进行故障排除以找到故障点。
,
mail()
函数很少返回returns5以外的值。它只关心已成功将电子邮件发送给MTA(邮件传输代理,即实际发送该邮件的程序)这一事实。
如果邮件格式不正确,MTA只会立即拒绝它。在这种情况下,您会在PHP中遇到错误。但是由于多种原因,它也可能拒绝电子邮件或在从PHP接受电子邮件后发送失败,由于种种原因,PHP不会对此有任何想法,因为它已经收到了5封响应。
您的MTA将有一个错误日志,如果该错误是本地发生的,您可以检查更多信息。
, 我使用的脚本在同一域中发送和接收时遇到了这个问题。您是否尝试过将电子邮件发送到另一个域中的电子邮件地址?这可能有助于缩小可能出现的问题。
, 我们面临着完全相同的问题。解决方法是在php.ini中设置适当的sendmail_path。
sendmail_path = \“ / usr / sbin / sendmail -t -i \”
设置以上内容解决了此问题。
, 发送测试电子邮件后,检查您的mail.log:
sudo tail -f /var/log/mail.log
然后,您可以看到分配给您尝试发送的最后一封电子邮件的ID。例如。我知道了:
Jan 11 23:03:14 vagrant-ubuntu-trusty-64 postfix/pickup[17228]: 69F3441529: uid=33 from=<www-data>
69F3441529是分配给该电子邮件的唯一ID。然后,您可以对具有该ID的所有行的日志进行grep ...
sudo grep 69F3441529 /var/log/mail.log
然后,您应该能够发现可能出现的任何错误消息,然后对它们进行Google搜索:)
, 就我而言,将服务器设置从IPv6地址更改为IPv4地址可以解决此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。