5

如何检查在 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);
4

1 回答 1

9

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

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

或者,如果您在邮件标题中设置了回复,那么您可以检查是否有任何退回的邮件,这将使您可以肯定地说邮件尚未送达。

于 2013-04-10T17:06:58.297 回答