laravel Mail :: failures()函数如何工作?

Raj*_*wal 9 php email swiftmailer laravel laravel-4

我一直试图获取没有使用laravel Mail::send()函数获取电子邮件的收件人列表.我正在尝试下面的代码.for循环用作因为每个用户都要收到自定义消息.

// First recipient is actual, the second is dummy.
$mail_to_users = ["original_account@domain.com","dummy_account@domain.com"];
$failures = [];

foreach($mail_to_users as $mail_to_user) {
   Mail::send('email', [], function($msg) use ($mail_to_user){
     $msg->to($mail_to_user);
     $msg->subject("Document Shared");
   });

   if( count( Mail::failures() ) > 0 ) {
      $failures[] = Mail::failures()[0];
   }
}

print_r($failures);
Run Code Online (Sandbox Code Playgroud)

我一直在尝试所有可能的选择.我将正确的邮件配置更改为错误的邮件配置config/mail.php.但是,如果我这样做,那么laravel显示错误页面,但$failure变量总是返回空.

Has*_*que 5

我认为没有办法检查电子邮件是否确实已发送给收件人。只要电子邮件有效(即使是虚拟的),它就会返回 true。但是,您可以使用 try catch 块来代替 Mail::failures(),如下所示:

foreach ($mail_to_users as $mail_to_user) {
            try {
                Mail::send('email', [], function($msg) use ($mail_to_user) {
                    $msg->to($mail_to_user);
                    $msg->subject("Document Shared");
                });
            } catch (Exception $e) {

                if (count(Mail::failures()) > 0) {
                    $failures[] = $mail_to_user;
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

  • 如果您能告诉读者方法调用可以抛出哪种异常,将会很有帮助:) (2认同)