如何检查邮件在我的服务器上发送的问题? 我运行一个简单的测试:疑难解答PHP邮件
if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}
哪个测试输出文本;但是,没有邮件到达。
我该如何去追踪这个问题?
如何检查邮件在我的服务器上发送的问题? 我运行一个简单的测试:疑难解答PHP邮件
if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}
哪个测试输出文本;但是,没有邮件到达。
我该如何去追踪这个问题?
这是一个很长的故事。几个要点(假设mail()返回true并且错误日志中没有错误):
对于德语使用者来说,前段时间我对这个问题写了一个非常详尽的“怎么办”。见here。
从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**.
不知道如何采取下一步,但这里是一个重要的点。
我要开始的第一个地方是PHP错误日志,然后是你的sendmail日志。也可以从命令行尝试sendmail并检查PHP配置以确保发送邮件的设置正确。
继迈尔斯,如果你是在Linux机器上,这样做在命令行:
# echo “Body text.” | mail -s “Hello world” [email protected]
如果您没有收到电子邮件,您必须对那个盒子的邮件系统出了问题。这是您提出的PHP问题的另一个问题。
嗯,找不到命令。 echo“正文文本”。 | mail -s“hello world”[email protected] -bash:mail:command not found – 2009-11-01 21:27:36
'哪个邮件' – 2009-11-01 21:40:59
怎么样 - 没有任何返回。 – 2009-11-02 00:39:24
如果所有故障排除失败 - 现在假设mail()由于未知原因返回false - 切换到邮件脚本,如PHPMailer,允许您完全绕过邮件()并通过SMTP直接连接,并提供广泛的调试模式。这样,您应该能够设置一个工作解决方案或找到问题的核心。
我其实也尝试过htmlMimeMail5,我觉得它也使用SMTP,但也有同样的运气。 – 2009-11-02 17:55:16
该类是否具有调试模式?您应该收到SMTP错误消息,而无需检查任何日志。 PHPMailer肯定可以。 – 2009-11-02 19:11:52
您是在这里开发一个在线的网络服务器,还是其他一些更符合个人开发沙箱的东西? (即,你的家用机器?)如果是后者,我可以告诉你我过去有很多问题,我的ISP(Cox)过滤了我的出站邮件端口。 (他们会告诉你他们不这样做,但我是他们确实是。)
我也收到了一些出站邮件,做了通过Cox邮件假脱机程序将它们传递给我之前几天。
我希望这很有帮助。
这可能是http://spamhaus.org/ – MiseryIndex 2009-11-01 19:28:09
更正。谢谢。 – 2009-11-01 19:29:20
未在spamhaus.org上列出(phew!) 发件人域确实属于服务器。 我试图发送到一些电子邮件帐户的所有不接收它。 (.Mac,gmail,yahoo) 我将通读日志文件。 你知道邮件日志将驻留在哪里吗? 谢谢 – 2009-11-01 22:17:40