php mail() 不起作用

php mail() 不起作用

我刚刚发现这个mail()功能不起作用

我在 Debian 下,我安装了 postfix 因为一个朋友告诉我这样做(虽然我没有配置它)。

当我执行 phpinfo() 时,我得到:

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

但在这个目录中我没有类似的东西sendmail

您是否知道我应该怎么做才能使 mail() 正常工作?

谢谢

答案1

在 Unix 中,大多数程序都依赖 MTA(消息传输代理)进行邮件传输。当程序想要发送消息时,它会执行/usr/sbin/sendmail并将整个消息发送到 stdin 中。

Sendmail MTA 是第一个以这种方式工作的(现在仍然如此),其他 MTA 也遵循相同的提供程序的约定/usr/sbin/sendmail

[在这个答案中,Sendmail 是原始的 MTA,而sendmail(小写)是/usr/sbin/sendmail(它随当前使用的所有 MTA 一起提供)。]

PHPmail()遵循 Unix 传统,只将消息传递给sendmail可执行文件。这意味着您需要一个 MTA。您已经安装了 Postfix,这很好。但是,它有一个sendmail二进制文件,所以如果你没有它/usr/sbin/,那么你必须在其他地方安装它——也许/usr/local/sbin/如果从源代码编译?

重新安装 Postfix 可能会解决问题。如果不能,请更新您的问题并提供详细信息,例如您最初是如何安装 Postfix 的。

如果你的sendmail安装目录不是/usr/sbin/,那么你必须编辑 PHP 的配置 -- php.ini。它通常在 中/etc/php5/,而 Debian 有其中。(cgi/用于通用 CGI/FCGI,apache2/用于 Apache PHP 模块,cli/用于从命令行使用 PHP 时。)

相关内容