Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查在CakePHP中发送电子邮件是否成功/不成功?_Php_Email_Cakephp_Error Handling - Fatal编程技术网

检查在CakePHP中发送电子邮件是否成功/不成功?

检查在CakePHP中发送电子邮件是否成功/不成功?,php,email,cakephp,error-handling,Php,Email,Cakephp,Error Handling,如何检查使用CakePHP发送电子邮件是否成功 我可以发送电子邮件没有问题,但我想能够处理错误,如果它无法发送。我该怎么做 这就是我到目前为止所做的: $email = new CakeEmail(); $email->from(array('email' => 'title')); $email->to($to); $email->subject('Account activation'); $activate_url = 'http://' . env('S

如何检查使用CakePHP发送电子邮件是否成功

我可以发送电子邮件没有问题,但我想能够处理错误,如果它无法发送。我该怎么做

这就是我到目前为止所做的:

$email = new CakeEmail();
$email->from(array('email' => 'title'));
$email->to($to);
$email->subject('Account activation');     
$activate_url = 'http://' . env('SERVER_NAME') .'/cakephp/users/activate/'.$id.'/'.$token;
$message = "Thank you for signing up. Click on the activation link to activate your account \n";
return $email->send($message.$activate_url);

您可以使用try-catch块检查邮件是否已成功移交给MTA,但无法真正检测或检查邮件是否已成功送达收件人。这是另一种情况

try {
    if ( $this->Email->send() ) {
        // Success
    } else {
        // Failure, without any exceptions
    }
} catch ( Exception $e ) {
    // Failure, with exception
}

或者,如果您在邮件标题中设置了“答复”,则可以检查是否有任何被退回的邮件,这样您就可以确定邮件尚未送达。

是否使用了“重试捕获”功能?最多可以检测邮件是否正确地传递到smtp服务器。您无法直接检测接收服务器是否拒绝/垃圾邮件发送电子邮件,或者smtp服务器是否延迟/排队发送邮件。