如何向多个收件人发送电子邮件laravel

时间:2018-11-20 02:41:03

标签: php laravel email eloquent swiftmailer

我正在尝试创建一个应用程序,其功能之一就是将电子邮件发送到多个地址,这并不容易。我使用了foreach循环,但是每当发生错误时,尤其是如果收件人邮件地址无效,应用程序就会停止。

这是我的代码

public function sendemails(Request $request){

     $email = $this->emailSetUp($request);

     $emails = $email->recipients;
     foreach ($emails as $value) {
        try{
            $mail =  Mail::to($value)->send(new SendEmail($email));
        }catch( \Swift_RfcComplianceException $e){
            $pattern = '/[a-z0-9_\-\+\.]+@[a-z0-9\-]+\.([a-z]{2,4})(?:\.[a-z]{2})?/i';
            preg_match_all($pattern, $e, $matches);
            $match = implode(',',$matches[0]);
            $mail_t_del = Email::where('email','LIKE', '%'.$match)->first();

            $mail_t_del->delete();
           Log::info($match .' '. 'deleted');

           $email = $this->emailSetUp($request);  
           $mail =  Mail::send(new SendEmail($email));      
       }
   }

}

我怎么

  1. 通过在引发异常后继续,将消息发送给多个收件人,并确保其不会失败。
  2. 如何跟踪应用程序的进度,即知道已发送的电子邮件和已拒绝的电子邮件。

2 个答案:

答案 0 :(得分:1)

您可以传递一系列电子邮件。

有关详细信息,请参见此处

https://laravel.com/api/5.5/Illuminate/Contracts/Mail/Mailer.html#method_to

我还建议您创建一个自定义请求,以检查以确保在处理之前电子邮件有效。

您可以在此处查看操作方法:

https://laravel.com/docs/5.7/requests

答案 1 :(得分:1)

-将邮件发送给多个收件人

传递您邮件类别中的所有电子邮件

示例:

 Mail::to($users)->send(new SendEmail($yourData));

将您的代码放入try catch

以便您可以忽略异常并继续发送其他邮件

-跟踪进度

如果要获取发送或不发送哪些邮件

然后处理catch语句异常并将其记录在文件或数据库中