故障排除PHP邮件[复制](Troubleshooting PHP Mail [duplicate]

2019-09-03 14:05发布

这个问题已经在这里有一个答案:

  • PHP的邮件功能没有完成发送电子邮件的 25个回答

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

if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}

其中测试输出的文本; 但是,没有邮件到达过。

我怎么能去下来的问题跟踪?

Answer 1:

这是一个相当漫长的故事。 有几个要点(假设邮件()返回true,并有在错误日志中没有错误):

  • 是否发件人地址(“发件人”)属于您的服务器上的域名? 如果不是,是真的。
  • 是您的服务器上的黑名单(例如,在spamhaus.org检查IP)? 这是共享主机的远程可能性。
  • 通过垃圾邮件过滤器过滤邮件? 与具有垃圾邮件文件夹中的freemailer开立账户,并找出。 另外,尝试将邮件发送到一个地址,而不需要垃圾邮件过滤器。
  • 你可能需要的第五个参数邮件()的“-f”添加发件人地址? (参见邮件()命令在PHP手册)
  • 如果你有机会到日志文件,检查这些,当然,如上建议。
  • 你选中“自:”地址可能反弹的邮件(“返回到发送方”)? 您还可以设置一个独立的“错误 - ”地址。

对于讲德语,我已经写了相当详尽的“做什么”这个问题,前一段时间。 见这里 。



Answer 2:

继迈尔斯,如果你是在Linux机器上,这样做在命令行:

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

如果您没有收到电子邮件,您必须对那个盒子的邮件系统出了问题。 这是你问的问题PHP一个不同的问题。



Answer 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**.

不知道如何采取下一步,但这里是一个重要的点。



Answer 4:

如果所有故障排除均失败-现在假定邮件()返回,原因不明假-切换到类似邮寄脚本PHPMailer的 ,可以让你完全绕过邮件(),并直接通过SMTP连接,并提供丰富的调试模式。 这样的话,你应该能够要么成立一个工作解决方案或找到问题的核心。



Answer 5:

我开始的第一个地方是PHP错误日志,那么你的sendmail的日志。 也可以尝试从命令行sendmail和检查PHP配置,以确保是正确设置用于发送邮件。



Answer 6:

是你的工作在实时Web服务器这里,或者说沿着个人发展沙箱的线路吗? (即,自己家里的电脑?)如果是后者,我可以告诉你,我已经在过去很多的问题,我的ISP(考克斯)过滤我的出站邮件的端口。 (他们会告诉你,他们不这样做,但我敢肯定 ,他们这样做。)

我也得到了一些出站邮件这使其通过考克斯邮件线轴天被抓到他们送到了我面前。

我希望这是有帮助的。



文章来源: Troubleshooting PHP Mail [duplicate]