在Laravel中发送批量电子邮件

时间:2019-04-12 13:16:08

标签: laravel mailing

如何在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));
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用现成的集成在Laravel中的外部交易电子邮件服务,例如Sendgrid。

答案 1 :(得分:0)

您可以使用job将邮件排队。这样一来,您不必等待所有邮件排队。

在这种情况下,您可以使用例如php artisan make:job SendNewsletter生成一个作业类,然后将上面函数中的代码粘贴到新作业类中的handle函数中。然后,在您的sendNewsletter函数中,您可以简单地将作业类的新实例排队,例如SendNewsletter::dispatch()

我还建议"chunking"users表中获得结果,因为您将获取很多结果。