如何在laravel中发送大量电子邮件
下面是实现该目的的当前代码,但是由于有1万用户,因此出现Http错误504。
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));
}
}
答案 0 :(得分:0)
您可以使用现成的集成在Laravel中的外部交易电子邮件服务,例如Sendgrid。
答案 1 :(得分:0)
您可以使用job将邮件排队。这样一来,您不必等待所有邮件排队。
在这种情况下,您可以使用例如php artisan make:job SendNewsletter
生成一个作业类,然后将上面函数中的代码粘贴到新作业类中的handle
函数中。然后,在您的sendNewsletter
函数中,您可以简单地将作业类的新实例排队,例如SendNewsletter::dispatch()
。
我还建议"chunking"从users
表中获得结果,因为您将获取很多结果。