0

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

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

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

4

2 回答 2

0

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

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

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

于 2010-05-13T12:22:27.703 回答
0

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

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

于 2010-05-12T15:16:40.013 回答