#laravel #mailing
#laravel #рассылка
Вопрос:
Как я могу добиться массовой отправки электронных писем в laravel
Здесь ниже приведен мой текущий код для достижения этой цели, но я получаю Http-ошибку 504, потому что есть пользователь 10K.
public function sendNewsletter(){
$applicants = User::applicant()
->whereMailSubscription(true)
->get();
$newsletter = NewsLetter::query()->where('id',$this->id)->first();
$subject = $newsletter->subject;
$message = $newsletter->message;
foreach($applicants as $applicant){
Mail::to($applicant)->queue(new NewsLetters($applicant,$subject,$message));
}
}
Комментарии:
1. Я думаю, я бы рекомендовал использовать что-то вроде Mailchimp для отправки информационных бюллетеней.
2. Нет, это был просто пример, но у меня есть другие действия по массовой рассылке в моем приложении @Ruub
3. Вы можете поместить приведенный выше код в задание, чтобы вам не приходилось ждать, пока он поставит в очередь все письма.
Ответ №1:
Вы можете использовать внешнюю транзакционную службу электронной почты, такую как Sendgrid, которая уже интегрирована в Laravel из коробки.
Ответ №2:
Вы могли бы использовать задание для постановки ваших писем в очередь. Таким образом, вам не придется ждать, пока все ваши письма будут поставлены в очередь.
В этом случае вы могли бы сгенерировать класс заданий, используя, например, php artisan make:job SendNewsletter
, а затем вставить свой код из функции выше в handle
функцию в новом классе заданий. Затем в вашей sendNewsletter
функции вы можете просто поставить в очередь новый экземпляр класса job, например SendNewsletter::dispatch()
.
Я бы также предложил «разделить» ваши результаты на части из users
таблицы, поскольку вы будете получать так много результатов.