在拉拉维尔发送批量电子邮件


如何在

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));
    }
}

您可以使用外部事务性电子邮件服务,例如Sendgrid,该服务已经开箱即用地集成到Laravel中。

您可以使用作业对邮件进行排队。这样,您就不必等待所有邮件排队。

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

我还建议从users表中"分块"您的结果,因为您将获得如此多的结果。

相关内容

最新更新