2015-09-16 2 views
0

У меня есть это требование, когда мне нужно отправлять отдельные письма всем пользователям в заголовках TO и CC из моего приложения.Отправка писем в цикле foreach в Laravel

Так, например, я добавляю [email protected] в TO; [email protected] in, [email protected] в CC. Здесь три идентификатора электронной почты, кумулятивные TO и CC.

Мне нужно отправить отдельное письмо всем трем. Таким образом, [email protected] будет видеть только его имя в заголовке Mail и т. Д. Для получателей CC.

Мой подход был объединить все электронные письма в массиве, а затем запустить цикл Еогеасп, что-то вроде этого:

foreach($emails as $email) { 
    Mail::send(..... 
    { 
     $message->to($email); 
    }); 
} 

ли это лучший способ сделать это? Или любой другой гораздо лучший подход, которым я могу следовать?

+1

Если у вас много пользователей, это плохая идея, чтобы сделать это синхронно во время обработки запроса, потому что это, скорее всего, перерыв. Было бы лучше [queue] (http://laravel.com/docs/5.1/mail#quue-mail) процесс отправки электронной почты с помощью 'Mail :: queue'. Кроме того, если у вас много пользователей, вы можете захотеть использовать отдельный сервис для отправки электронных писем, чтобы избежать проблем, которые могут возникнуть в результате попыток отправить большой объем за короткое время. – Bogdan

+0

Какое отдельное обслуживание я могу использовать? – nirvair

+2

Есть много, и это зависит от того, ищете ли вы бесплатную услугу или нет. Например, [Mailchimp] (http://mailchimp.com/) и [Sendgrid] (https://sendgrid.com/) имеют бесплатные планы, которые позволяют отправлять до 12000 писем в месяц, или вы можете использовать любой из платные планы в зависимости от ваших потребностей. Конечно, вы можете использовать [Mandrill] (https://www.mandrill.com/) или [Mailgun] (https://www.mailgun.com/), для которых у Laravel есть встроенная интеграция. – Bogdan

ответ

0
if (!empty($users)) { 
    foreach ($users as $user) { 
     Mail::send('emails.acitvation', ['item' => $xyz, 'user' => $user], 
      function ($message) use ($user) { 
       $message->subject('your subject here'); 
       $message->to($user['email']); 
      }); 
    } 
} 
Смежные вопросы