使用队列发送多封电子邮件 - laravel 7

时间:2021-03-30 05:38:47

标签: php laravel

我需要使用 Laravel 队列和作业发送批量电子邮件。如果我理解,我的这种方法应该分派 1 个作业,其中所有电子邮件都被提取并通过 foreach 循环一个接一个地发送,对吗?不知何故,只发送了一封电子邮件。当我检查邮件时,收件人邮件的格式似乎是“test2@gmail.com”。只有 test1 电子邮件帐户收到了电子邮件。我不确定是什么原因造成的。感谢您的帮助。

控制器

$body = $request->body;
        $titleName = $request->subject;
        
        $job = (new \App\Jobs\SendQueueEmail($body, $titleName))
                ->delay(now()->addSeconds(2)); 

        dispatch($job);

工作

public function handle(Request $request)
    {

        $emailsAlumni = ['test1@gmail.com', 'test2@gmail.com'];
        $date = Carbon::now()->format('d M Y');

        $data = [
            "body" => $this->body,
            "date" => $date
        ];

        foreach ($emailsAlumni as $email) {
            Mail::send('main.admin.email.general', $data, function ($message) use ($email) {
                $message->to($email);
                $message->subject('title');
            });
        }

    }

1 个答案:

答案 0 :(得分:0)

您不需要循环整个 Mail 实例,您可以直接尝试

Mail::send('main.admin.email.general', $data, function ($message) use ($emailsAlumni) {
            $message->to($emailsAlumni);
            $message->subject('title');
        });