PHP mail() 无法在 ubuntu 16.04 上与 Postfix 配合使用

PHP mail() 无法在 ubuntu 16.04 上与 Postfix 配合使用

好的,我意识到这个问题已经被问过了,但是与我的具体问题相关的问题并没有被提出来。

基本上,我几乎不知道我在服务器上做什么,但我需要配置它以发送电子邮件,而不是让它们最终进入垃圾邮件文件夹。目前我似乎的主要问题是我的mail.log文件中的此错误消息:

error: to submit mail, use the Postfix sendmail command

fatal: the postfix command is reserved for the superuser

在我的 php.ini 文件中sendmail_path = /usr/sbin/sendmail -t -i

Postfix 配置了我的主机名,当我从命令行发送邮件时,它会正常发送,因此一切都正常,但在 CLI 中,我以 root 身份登录,因此这可能不是问题,因为我有访问权限。运行时,postfix status我得到以下内容:

postfix: Postfix is running with backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
postfix/postfix-script: the Postfix mail system is running: PID: 13198

我已经完成了这个项目,真的需要尽快解决这个问题,但是所有不同的教程似乎对如何正确设置这一切有不同的看法,或者至少我不明白我做错了什么。

重新讨论一下,主要目标是让 PHP 在调用时真正向他们发送电子邮件

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

答案1

谢谢@bgtvfr 我测试的时候,这些都正常工作。从命令行发送邮件完全按预期工作。

我从 mail.log 中列出的错误是由于我的 php.ini 文件配置不正确造成的。

有一次我设置了sendmail_path = /usr/sbin/posfix,然后当我将其改回上面的代码时,指向sendmail我没有重新加载 php.ini 设置。我正在使用 nginx 和 php7.0 运行 ubuntu,但是重新启动 nginx 不会重新加载您的 php 设置,因此我不得不运行以下命令:

sudo /etc/php7.0/fpm/php.ini restart

一旦重置,sendmail_path = /usr/sbin/sendmail它就开始按预期工作。

相关内容