亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 多次發送每封電子郵件

Laravel 多次發送每封電子郵件

PHP
夢里花落0921 2022-01-24 10:43:07
當某個事件被觸發時,我基于 Laravel 的應用程序必須準確地向郵件列表中的每個用戶發送一封事務性電子郵件。這是循環代碼:$users = User::where('notifiable', 1)->get();foreach($users as $user) {    $info = [        'email' => $user->email,        'name'  => $user->name    ];    $data = [        'message'   => 'Sample text'    ];    Mail::send(['emails.html.notification', 'emails.text.notification',], $data, function($message) use ($info) {        $message            ->to($info['email'], $info['name'])            ->subject('example')            ->from('[email protected]','Example');    });}不幸的是,多個用戶多次收到相同的郵件。我無法弄清楚發生了什么:將電子郵件重定向到日志時,我按預期看到每個用戶都有一封郵件;其他所有事件都會觸發電子郵件發送給單個用戶。但是,沒有人收到來自這些事件的多封電子郵件。該應用程序使用 Sendinblue 作為外部 SMTP 服務。我得到的一些提示:每小時的郵件配額非常低 -> 收到了 3 次電子郵件(Sendinblue 上的隊列立即被填滿)每小時的郵件配額提高了 10 倍 -> Sendinblue 上不再有隊列,但現在用戶收到了多達 7 次相同的電子郵件!
查看完整描述

1 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

顯然,排隊電子郵件和設置延遲事件已經解決了這個問題。


現在每 10 秒請求一個新作業。


$users = User::where('notifiable', 1)->get();


$counter = 0;


foreach($users as $user) {


    $payload = [

        'email' => $user->email,

        'name'  => $user->name,

        'message'   => 'Sample text'

    ];


    dispatch(new SendNotification($payload))

    ->delay(now()->addSeconds($counter * 10));


    $counter++;


}

謝謝你的支持!


查看完整回答
反對 回復 2022-01-24
  • 1 回答
  • 0 關注
  • 206 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號