Как отправить письмо нескольким получателям laravel - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь создать приложение, в котором одной из функций является отправка электронной почты на несколько адресов, и это было нелегко. Я использовал цикл 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 голосов
/ 20 ноября 2018

- отправить сообщение нескольким получателям

передать все письма в вашем классе почты

Пример:

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

поместите ваши коды в try catch

, чтобы вы могли игнорировать исключение и продолжать отправлять другие письма

- Отслеживание прогресса

Если вы хотите узнать, какие письма отправляются или нет

затем обработайте его при исключении оператора catch и зарегистрируйте его в файле или БД

0 голосов
/ 20 ноября 2018

Вы можете передать массив писем.

подробности см. Здесь

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

Также я предлагаю вам создать пользовательский запрос, чтобы убедиться, чточто электронные письма действительны до обработки.

Вы можете увидеть, как это сделать здесь:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...