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

2022-08-30 20:00:21

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

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

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

peter# mail example@example.com

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

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

不仅如此,回声也无济于事。既不是也不是 。$restruefalse

我该做些什么以及如何使它工作?

感恩节


答案 1

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

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

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

whereis sendmail

答案 2

在共享主机上为我工作的解决方案是在函数中使用附加参数。而不是。。。-fmail

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

我不得不使用...

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

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

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


推荐