2013-04-10 97 views
5

如何检查在CakePHP中发送电子邮件是否成功?检查发送邮件是否成功/不成功在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); 
+0

您是否使用了try catch? – 2013-04-10 16:58:23

+0

充其量你可以检测到邮件是否已交给smtp服务器正确。您不能直接检测接收服务器是否拒绝/发送垃圾邮件,或者您的smtp服务器是否延迟/排队邮件。 – 2013-04-10 16:58:37

回答

9

你可以使用try catch块,检查邮件是否被成功移交给MTA,你真的不能检测或检查邮件已成功发送给收件人。这是另一种情况。

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

或者如果设置回复到您的邮件标题,然后你可以检查任何退回的邮件,这将让你有把握,一个消息尚未交付说。