如何获取mail()函数的错误消息?

2022-08-30 08:06:08

我一直在使用PHP函数。mail()

如果邮件因任何原因未发送,我想回显错误消息。我该怎么做?

类似的东西

$this_mail = mail('example@example.com', 'My Subject', $message);

if($this_mail) echo 'sent!';
else echo error_message;

谢谢!


答案 1

如果您在 Windows 上使用 SMTP,则可以在 mail() 返回 false 时使用 error_get_last()。请记住,这不适用于PHP的本机mail()函数。

$success = mail('example@example.com', 'My Subject', $message);
if (!$success) {
    $errorMessage = error_get_last()['message'];
}

使用 ,您将获得如下内容:print_r(error_get_last())

[type] => 2
[message] => mail(): 無法連接到「x.x.x.x」口口25的郵件伺服器,驗證 php.ini中的「SMTP」和「smtp_port」設定,或使用 ini_set()
[file] => C:\www\X\X.php
[line] => 2


答案 2

用php发送邮件不是一个单步过程。mail() 返回 true/false,但即使它返回 true,也不意味着消息将被发送。mail() 所做的就是将消息添加到队列中(使用 sendmail 或您在 php 中设置的任何内容.ini)

没有可靠的方法来检查消息是否已在php中发送。您将不得不查看邮件服务器日志。


推荐