一尘不染

对PHP邮件进行故障排除

php

如何检查服务器上发送的邮件有问题?我运行一个简单的测试:

if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}

测试输出哪个文本;但是,没有邮件到达。

我该如何追踪问题?


阅读 223

收藏
2020-05-26

共1个答案

一尘不染

这是一个很长的故事。一些要点(假设mail()返回true,并且错误日志中没有错误):

  • 发件人地址(“发件人”)是否属于您服务器上的域?如果不是,请这样做。
  • 您的服务器是否列入黑名单(例如,在spamhaus.org上检查IP)?共享托管的可能性很小。
  • 邮件是否被垃圾邮件过滤器过滤?使用带有垃圾邮件文件夹的freemailer开一个帐户,然后查找。另外,请尝试将邮件发送到没有垃圾邮件过滤器的地址。
  • 您是否可能需要mail()的第五个参数“ -f”添加发件人地址?(请参阅PHP手册中的mail()命令)
  • 如果您有权访问日志文件,请按照上面的建议进行检查。
  • 您是否检查“发件人:”地址中是否存在退回邮件(“退回发件人”)?您也可以设置一个单独的“ errors-to”地址。
2020-05-26