在CakePHP中如何检查发送电子邮件是否成功/失败?

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);

你在这个里面使用了 try catch 吗? - roshan lal
你最多只能检测到邮件是否已正确传递给SMTP服务器。你无法直接检测到接收服务器是否拒绝/将邮件标记为垃圾邮件,或者你的SMTP服务器是否延迟/排队发送邮件。 - Marc B
1个回答

9

您可以使用try catch块来检查邮件是否成功交给MTA,但您无法真正检测或检查邮件是否成功传递到收件人。那是不同的情况。

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

如果您在邮件头中设置了回复地址,那么您可以检查任何退信邮件,这样您就可以确定一条消息是否未被送达。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接