Laravel延迟消息队列

时间:2018-02-20 21:08:06

标签: php laravel laravel-5.3

参考https://laravel.com/docs/5.2/mail#queueing-mail 如何使邮件排队为批量用户发送电子邮件,并在每封发送1分钟的电子邮件之间保持差距。

foreach($user as $user){
Mail::later(60,'web.mail.NotifyUserExpiring', ['user'=> $Sub->user,'ExpiryDate' => $exp], function ($message) {
        $message->to($user->email);
        $message->subject('Services Renewal Reminder');


}

1 个答案:

答案 0 :(得分:0)

Laravel使用具有SwiftmailerAntiFlood Plugin

因此,如果您想在邮件发送后等待一分钟,可以这样做:

\Mail::getSwiftMailer()->registerPlugin(new \Swift_Plugins_AntiFloodPlugin(1, 1));

foreach($user as $user){
   Mail::send(new Message($user));
}

如果要在100封电子邮件后暂停30秒,则需要将第一行中的数字更改为:

$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(100, 30));