【发布时间】:2010-12-12 02:20:27
【问题描述】:
如何检查在我的服务器上发送的邮件是否存在问题? 我运行一个简单的测试:
if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}
测试输出哪个文本;但是,没有邮件到达。
我该如何追踪问题?
【问题讨论】:
如何检查在我的服务器上发送的邮件是否存在问题? 我运行一个简单的测试:
if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}
测试输出哪个文本;但是,没有邮件到达。
我该如何追踪问题?
【问题讨论】:
来自 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 配置以确保正确设置以发送邮件。
【讨论】:
这是一个很长的故事。几个要点(假设 mail() 返回 true 并且错误日志中没有错误):
对于讲德语的人,我前段时间就这个问题写了一篇相当详尽的“做什么”。见here。
【讨论】:
跟随 Myles,如果您使用的是 Linux 机器,请在命令行上执行此操作:
# echo “Body text.” | mail -s “Hello world” you@example.com
如果您没有收到该电子邮件,则说明该邮箱的邮件系统存在问题。这与您提出的 PHP 问题不同。
【讨论】:
ps、rpm -qa、典型的 sendmail 日志位置,也许是 rc.* 目录,以及我能想到的任何其他内容。可能是那里没有设置邮件?
如果所有故障排除失败 - 现在假设 mail() 由于未知原因返回 false - 切换到像 PHPMailer 这样的邮件脚本,它允许您完全绕过 mail() 并直接通过 SMTP 连接,并提供广泛的调试模式。这样,您应该能够建立一个可行的解决方案或找到问题的核心。
【讨论】:
您是在这里使用实时网络服务器,还是类似于个人开发沙箱的东西? (例如,您的家用机器?)如果是后者,我可以告诉您,我的 ISP (Cox) 过去在过滤出站邮件端口时遇到了很多问题。 (他们会告诉你他们不会那样做,但我确定他们会这样做。)
我还收到了一些确实通过的出站邮件,这些邮件在发送给我之前在 Cox 邮件假脱机中被困了好几天。
我希望这会有所帮助。
【讨论】: