我正在编写一个相当简单的注册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轮询处理程序.