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