捕获PHP mail()错误并显示合理的用户错误消息

Cli*_*ker 9 php

我正在编写一个相当简单的注册PHP脚本,该脚本使用PHP的内置mail()函数向用户发送激活链接.

问题是,我可以捕获正常的错误,如电子邮件格式,但一旦它触发到服务器并说用户已经输入失败的电子邮件地址,我不知道如何捕获此错误并告诉用户什么发生了.

例如,此刻我得到了这个:

警告:mail()[function.mail]:SMTP服务器响应:554:收件人地址被拒绝:第70行的**中继访问被拒绝

关于这样的错误,我能做些什么?我知道使用@符号来抑制错误,但我有点想做更多而且处理问题.

mar*_*rio 21

使用布尔结果检测错误:

$success = @mail(...);
Run Code Online (Sandbox Code Playgroud)

然后你想找出导致问题的内部错误,所以使用:

$error = error_get_last();
preg_match("/\d+/", $error["message"], $error);
switch ($error[0]) {
    case 554:
        ...
    default:
        ...
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于PHP 5.2.

无法验证传递或使用PHP查看传输错误邮件.你需要一个pop3轮询处理程序.

  • 感谢您发布此实际答案:) (2认同)