PHP 邮件发送不出去,我该如何调试?

新手上路,请多包涵

我一直在尝试发送注册、邀请等邮件。

在本地开发中,发送电子邮件。然而,一旦在服务器上没有邮件到达。

我安装了后缀。我试图设置邮件服务器但放弃了。所以目前,如果我输入终端

peter# mail example@example.com

电子邮件到达。但是,这不会发送电子邮件:

  $res  = mail('example@example.com', 'subj', 'bodddd');

不仅如此,回 $res 什么也没给出。既不是 true 也不是 false

我该怎么做才能让它发挥作用?

谢谢

原文由 mgPePe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 327
2 个回答

根据您上面的评论,看起来您的 sendmail 路径有误或在您的 php.ini 中被注释掉了。它应该是这样的:

 sendmail_path = /usr/sbin/sendmail -t -i

如果您不确定您的 sendmail 二进制文件位于何处,您可以使用以下方法找到它:

 whereis sendmail

原文由 Oldskool 发布,翻译遵循 CC BY-SA 3.0 许可协议

在共享主机上对我有用的解决方案是使用 -f mail 函数中的附加参数。代替 …

mail($to, $subject, $body, $headers);

我不得不用…

mail($to, $subject, $body, $headers, " -fvaliduser@validdomain.com");

根据 php 手册,附加参数作为附加参数提供给 sendmail。请注意, -f 和电子邮件之间缺少空格似乎是故意的。

在我的情况下,在一个特定的主机上,我无法访问 postfix/sendmail 日志。原始命令返回 true 并且 cpanel 日志显示它已被接受交付,但收件人从未收到它。

原文由 drgrog 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏