PHP邮件没有发送,我该如何调试?

时间:2011-10-27 07:45:59

标签: php email

我一直在尝试发送电子邮件进行注册,邀请等。

在本地开发中,电子邮件会被发送。但是,一旦在服务器上没有邮件到达。

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

peter# mail example@example.com

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

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

不仅如此,而且回复$res也没有任何效果。既不true也不false

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

感谢名单

2 个答案:

答案 0 :(得分:18)

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

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

如果您不确定您的sendmail二进制文件所在的位置,可以使用以下命令找到它:

whereis sendmail

答案 1 :(得分:3)

在共享托管上对我有用的解决方案是使用-f函数中的mail附加参数。而不是......

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

我不得不使用......

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

根据the php manual,附加参数作为sendmail的附加参数提供。请注意,-f与电子邮件之间缺少空间似乎是有意的。

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