PHP不发送出站邮件

Jam*_*lor 1 php sendmail

我正在使用sendmail包和php,当我尝试在PHP中使用mail函数时,它返回true但没有发送任何内容.

php配置

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path =/usr/sbin/sendmail -t -i
Run Code Online (Sandbox Code Playgroud)

php文件

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
trace(mail('jamie@domain.tld','Testing','test.'));
Run Code Online (Sandbox Code Playgroud)

邮件程序日志显示此信息

mail() on [/var/www/misc/mail.php:5]: To: jamie@domain.tld -- Headers: 
Run Code Online (Sandbox Code Playgroud)

通过CLI运行sendmail,如下所示:

echo -e "To: jamie@domain.tld\nSubject: Test\nTest\n" | sendmail -bm -t -v
Run Code Online (Sandbox Code Playgroud)

返回"发件人确定","收件人确定"

任何人都知道可能导致php不发送电子邮件的任何事情?

Mar*_*c B 6

PHP与邮件传递无关.它的工作开始和结束时将电子邮件发送到指定的SMTP代理/服务器.如果mail()没有返回一个布尔值FALSE,那么PHP的工作已经成功并且它已经不在了.

检查SMTP服务器的日志,看看切换完成后电子邮件会发生什么.很可能邮件被拒绝/灰名单/垃圾邮件被遗忘,因为PHP mail()真的很受打击.

考虑切换到SwiftmailerPHPMailer,这两者都提供了比mail()更好的PHP < - > SMTP交互诊断.

从命令行手动测试意味着很少:您的shell环境与脚本可能执行的in-webserver环境(苹果和橙子)非常不同.