PHP邮件疑难解答

Ric*_*ani 11 php linux sendmail

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

if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}
Run Code Online (Sandbox Code Playgroud)

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

我该如何追踪问题?

Pek*_*ica 13

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

  • 发件人地址("发件人")是否属于您服务器上的域?如果没有,那就这样吧.
  • 您的服务器是否在黑名单中(例如,检查spamhaus.org上的IP)?这是共享主机的远程可能性.
  • 邮件是否通过垃圾邮件过滤器过滤?使用具有垃圾邮件文件夹的freemailer打开一个帐户并查找.此外,尝试将邮件发送到没有垃圾邮件过滤器的地址.
  • 您是否可能需要mail()的第五个参数"-f"来添加发件人地址?(参见PHP手册中的mail()命令)
  • 如果您有权访问日志文件,请按照上面的建议检查这些文件.
  • 你检查"from:"地址是否有可能的退回邮件("退回发件人")?您还可以设置单独的"错误到"地址.

对于讲德语的人来说,我前段时间在这个问题上写了一篇非常详尽的"做什么".看到这里.