如何检查在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 :(得分:9)
您可以使用try catch块来检查邮件是否已成功移交给MTA,您无法真正检测或检查邮件是否已成功传递给收件人。这是另一种情况。
try {
if ( $this->Email->send() ) {
// Success
} else {
// Failure, without any exceptions
}
} catch ( Exception $e ) {
// Failure, with exception
}
或者,如果您在邮件标题中设置了回复,则可以检查是否有任何退回邮件,这样可以确定邮件尚未发送。