【问题标题】:sendmail working but PHP mail() is failingsendmail 工作,但 PHP mail() 失败
【发布时间】:2010-05-12 14:45:22
【问题描述】:

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

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

有没有办法追踪问题的根源? mail() 似乎只是返回真或假。

【问题讨论】:

    标签: php linux apache email sendmail


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      使用 error_reporting(E_ALL) 启用所有错误、警告和通知。让错误出现在有用的地方或注册一个回调来做一些有用的事情。

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

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

      【讨论】:

        猜你喜欢
        • 2012-02-12
        • 2011-07-14
        • 2012-06-07
        • 2018-12-19
        • 2015-04-16
        • 1970-01-01
        • 2019-10-21
        • 2016-09-22
        • 1970-01-01
        相关资源
        最近更新 更多