我似乎无法使用PHP的邮件()发送电子邮件。我也试过PHPMailer和Swiftmail没有成功。但是,服务器上的以下命令可以成功传递邮件。sendmail工作但PHP邮件()失败
cat test.txt | mail -s "test mail" [email protected]
有没有办法来追踪问题来自哪里? mail()似乎返回true或false。
我似乎无法使用PHP的邮件()发送电子邮件。我也试过PHPMailer和Swiftmail没有成功。但是,服务器上的以下命令可以成功传递邮件。sendmail工作但PHP邮件()失败
cat test.txt | mail -s "test mail" [email protected]
有没有办法来追踪问题来自哪里? mail()似乎返回true或false。
在PHP> = 5.2上,有error_get_last()
可以检索上次函数调用返回的任何错误。有关如何从链接页面上的旧版本PHP获取等效信息的详细信息。
至于PHPMailer,有$mailer->ErrorInfo
属性,其中包含最后一个错误发生。 SwiftMailer必须有类似的东西。如果邮件从命令行运行,而不是从PHP或邮件库中运行,则很可能会出现配置错误。我猜你的主机没有配置PHP sendmail_path
ini参数。
使用error_reporting(E_ALL)启用所有错误,警告和通知。有错误的地方有用或注册一个回调,它会做一些有用的事情。
然后你会看到发生了什么。 PHP错误处理在默认情况下是无用的(并且它的默认值在不同的地方都是不同的,所以你必须在实践中重写它)。
很有可能它被配置为执行SMTP到localhost,而您的MTA不允许从中继。将其配置改为使用sendmail,或修复您的MTA以允许从本地主机进行中继。