使用 php 邮件功能将 sendmail (Fedora) 配置为在本地主机上工作

Configure sendmail (Fedora) to work on localhost using the php mail function

我正在使用以下代码向我的 gmail 帐户发送电子邮件:

$to      = 'My gmail address';
$subject = 'subject here';
$message = 'Test PHP email using mail()';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

if( !mail($to, $subject, $message, $headers) ) echo "Error with sendmail mail()";
else echo 'Message has been sent';

运行 脚本 returns "Message has been sent",但我从未收到电子邮件(已检查垃圾邮件)。

我的OS是Fedora release 20(Heisenbug)和phpinfo函数returns如下:

PHP                 Version: 5.5.23
System:             Linux localhost.localdomain 3.18.9-100.fc20.x86_64
Configuration File: /etc/php.ini
Apache Version:     Apache/2.4.10 (Fedora) PHP/5.5.23
Hostname:Port:      localhost.localdomain:0
DOCUMENT_ROOT:      /var/www/html

本地和主机的以下值相同:

sendmail_from:      no value
sendmail_path:      /usr/sbin/sendmail -t -i
SMTP:               localhost
smtp_port:          25

我已经安装了 sendmail 和 sendmail-cf。这些是 sendmail.mc 文件中的 DAEMON_OPTIONS / LOCAL_DOMAIN 设置:

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl

请帮忙。

您的诊断有些欠缺。检查您的 MTA 日志和 mailq 以了解接下来发生了什么。

Sendmail 是一个非常酷的工具,但我 推荐给 experience/in 这样的上下文有限的人使用它。通常我会建议 nullmailer,但它不进行本地传递(我上次检查过)因此我建议您考虑使用 postfix 作为 MTA。