PHP邮件疑难解答

PHP邮件疑难解答,php,linux,sendmail,Php,Linux,Sendmail,如何检查服务器上发送的邮件的问题? 我运行了一个简单的测试: 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 tha

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

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日志。还可以尝试从命令行发送邮件,并检查PHP配置,以确保正确设置发送邮件。

这是一个相当长的过程。几个要点(假设mail()返回true,并且错误日志中没有错误):

  • 发件人地址(“发件人”)是否属于服务器上的域?如果没有,就这样做
  • 您的服务器是否在黑名单上(例如,在spamhaus.org上检查IP)?这是一个远程共享托管的可能性
  • 邮件是否通过垃圾邮件过滤器过滤?打开一个有垃圾邮件文件夹的免费邮寄者的帐户,然后查找。另外,尝试将邮件发送到没有垃圾邮件过滤器的地址
  • 是否可能需要mail()的第五个参数“-f”来添加发件人地址?(请参阅PHP手册中的mail()命令)
  • 如果您有权访问日志文件,请按照上面的建议检查这些文件
  • 您是否检查“发件人:”地址以查找可能被退回的邮件(“退回给发件人”)?您还可以设置一个单独的“错误到”地址

对于讲德语的人,我在一段时间前就这个问题写了一篇相当详尽的“该做什么”。看

在Myles之后,如果您在Linux机器上,请在命令行上执行此操作:

# echo “Body text.” | mail -s “Hello world” you@example.com

如果你没有收到那封电子邮件,说明你的邮箱系统有问题。这与您所问的PHP问题不同。

如果所有故障排除都失败了-现在假设mail()由于未知原因返回false-切换到这样的邮件脚本,它允许您完全绕过mail(),直接通过SMTP连接,并提供广泛的调试模式。通过这种方式,您应该能够设置一个有效的解决方案或找到问题的核心。

您是在这里使用实时Web服务器,还是使用类似于个人开发沙箱的东西?(即,您的家用计算机?)如果是后者,我可以告诉您,过去我的ISP(Cox)过滤出站邮件端口时遇到了很多问题。(他们会告诉你他们不会这么做,但我肯定他们会这么做。)

我还收到了一些发送出去的邮件,这些邮件在发送给我之前的几天里都被《考克斯邮报》的假脱机邮件缠住了


我希望这会有所帮助。

它可能没有在spamhaus.org(phew!)上列出。发件人域确实属于服务器。我已经尝试发送到一个电子邮件帐户,所有这些都没有;我没有收到。(Mac,gmail,yahoo)我会查看日志文件。你知道邮件日志会在哪里吗?感谢您使用的是哪种机器/系统/平台?Apache/2.2.3(Debian)PHP/5.2.0-8+etch13Hmmm,未找到命令。回音“正文。”|邮件-s“你好,世界”richtestani@mac.com-bash:mail:command not found我想我应该开始调查sendmail,查看
ps
rpm-qa
,典型的sendmail日志位置,可能是rc.*dir,以及我能想到的任何其他内容。可能是邮件没有设置在那里?顺便说一句,你可能想删除你在这里的第一条评论,这样你的电子邮件地址就不会比以前更多地被收集。我会把它标出来引起注意,什么也没发生。该死,我讨厌linuxI实际上尝试了HTMLIMEMAIL5,我想它也使用SMTP,但运气一样。这个类有调试模式吗?您不必检查任何日志就可以返回SMTP错误消息。PHPMailer绝对可以。