如何检查我的服务器上发送邮件的问题? 我进行了一个简单的测试:
if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}
测试输出文本;但是,没有邮件到达。
我该如何追踪问题?
答案 0 :(得分:13)
这是一个很长的故事。几个要点(假设mail()返回true并且错误日志中没有错误):
对于讲德语的人,我前段时间在这个问题上写了一篇非常详尽的“做什么”。见here。
答案 1 :(得分:4)
关注Myles,如果您在Linux机器上,请在命令行上执行此操作:
# echo “Body text.” | mail -s “Hello world” you@example.com
如果您没有收到该电子邮件,则该邮箱系统上的邮件系统出现问题。这是与您提出的PHP问题不同的问题。
答案 2 :(得分:3)
从PHP手册:
Return Values
Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.
It is important to note that just because the mail was accepted for delivery, **it
does NOT mean the mail will actually reach the intended destination**.
不确定如何采取下一步,但这是重要的一点。
答案 3 :(得分:2)
如果所有故障排除都失败了 - 现在假设mail()因未知原因返回false - 切换到PHPMailer之类的邮件脚本,允许您完全绕过mail()并直接通过SMTP连接,并提供广泛的调试模式。这样,您应该能够设置工作解决方案或找到问题的核心。
答案 4 :(得分:1)
我开始的第一个地方是PHP错误日志,然后是你的sendmail日志。还可以从命令行尝试sendmail并检查PHP配置,以确保正确设置发送邮件。
答案 5 :(得分:1)
您是在这里开展实时网络服务器,还是在个人开发沙箱的其他方面? (即你的家用机器?)如果是后者,我可以告诉你,过去我的ISP(Cox)过滤我的出站邮件端口时遇到了很多问题。 (他们会告诉你他们没有这样做,但我确实某些他们这样做。)
我还收到了一些已经通过Cox邮件假脱机捕获的出站邮件,这些邮件已经发送给我了。
我希望这有用。