2010-05-12 109 views
0

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

cat test.txt | mail -s "test mail" [email protected] 

有没有办法来追踪问题来自哪里? mail()似乎返回true或false。

回答

0

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

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

0

使用error_reporting(E_ALL)启用所有错误,警告和通知。有错误的地方有用或注册一个回调,它会做一些有用的事情。

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

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