sendmail工作,但PHP mail()失败

时间:2010-05-12 14:45:23

标签: php linux apache email sendmail

我似乎无法使用PHP的邮件()发送电子邮件。我也试过PHPMailer和Swiftmail没有成功。但是,服务器上的以下命令可以成功传递邮件。

cat test.txt | mail -s "test mail" my@email.com 

有没有办法追踪问题的来源? mail()似乎只返回true或false。

2 个答案:

答案 0 :(得分:0)

在PHP> = 5.2上,有error_get_last()来检索最后一个函数调用返回的错误。有关如何在链接页面上从旧版本的PHP获取等效信息的详细信息。

对于PHPMailer,有$mailer->ErrorInfo属性,其中包含发生的最后一个错误。 SwiftMailer必须有类似的东西。最有可能的是,如果邮件是从命令行运行而不是从PHP或邮件库中运行,那么就会出现配置错误。我猜你的主机没有配置PHP sendmail_path ini参数。

答案 1 :(得分:0)

使用error_reporting(E_ALL)启用所有错误,警告和通知。让错误变得有用或注册一个回调,它会做一些有用的东西。

然后你会看到发生了什么。默认情况下,PHP错误处理是无用的(并且它的默认值在任何地方都是不同的,所以你必须在实践中覆盖它。)

很可能它被配置为对本地主机执行SMTP,而您的MTA不允许从中继。将其配置更改为使用sendmail,或修复您的MTA以允许从localhost中继。