Как правильно отправить массовую почту с Laravel через AWS SES? - PullRequest
0 голосов
/ 12 января 2020

SES одобрил скорость отправки 500 писем в секунду. Когда я пытаюсь отправить массовую электронную почту через Laravel с помощью SES API, фактическая скорость отправки почты очень низкая (около ~ 100 в минуту).

Вот краткий обзор того, как я это делаю -

...
Users::latest()->chunk(100, function($users) use($newsletter) {

    Notification::send($users, new SendNewsLetter($newsletter));    // queued
})

Я предполагал, что я отправлю около 100 писем за один снимок, однако Horizon показывает, что очередь, которую я использую, будет долго ждать (несколько секунд).

Может кто-нибудь сообщить мне, как правильно отправлять массовые электронные письма, используя SES и Laravel?

1 Ответ

0 голосов
/ 12 января 2020

Во-первых, я рекомендую изменить настройку файла .env для QUEUE_DRIVER=sync на QUEUE_DRIVER=database.

отправка действия по электронной почте

    $users = Users::latest()->take(100)->get();

    Mail::queue('send', ['users' => $users], function($m) use ($users) {
       foreach ($users as $user) {
          $m->to($user->email)->subject('YOUR SUBJECT GOES HERE');
       }
    });

В качестве следующего шага вам необходимо создать таблицу очередей в базе данных, используя следующую команду, прежде чем нажимать на маршрут:

PHP artisan queue: table
PHP artisan migrate

Перед началом проекта вам нужно запустить слушатель, чтобы прослушать запрос очереди. Но вы познакомитесь с новым методом, поскольку слушание - это высокая загрузка ЦП. Лучше использовать демон. Итак, выполните следующую команду:

PHP artisan queue:work --daemon --tries=3

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...