Как Laravel планирует рассылку писем для последующей отправки?

Документация Laravel описывает возможность запланировать почту для более поздней доставки < / strong> со следующим примером:

$when = Carbon::now()->addMinutes(10);

Mail::to($request->user())
    ->cc($moreUsers)
    ->bcc($evenMoreUsers)
    ->later($when, new OrderShipped($order));

Никакая дополнительная конфигурация не упоминается в документации (для этой функции не требуются таблицы базы данных или что-то еще). Но мне интересно, как это работает? Где Laravel хранит информацию для последующего поиска.

Надежна ли эта функция в течение длительного времени? Я хочу отправить пользователю письмо через 3 дня после регистрации. Может быть, почта потеряется? Например при перезапуске сервера?


person miho    schedule 16.05.2017    source источник
comment
Для этого типа работ я использую решение API nodejs   -  person iam batman    schedule 16.05.2017
comment
См. Также этот документ вместе с ответом Сандиша, laravel.com/docs/5.4/scheduling   -  person manian    schedule 16.05.2017
comment
При отложенной доставке @manian mail не используется планирование, и вам не нужно настраивать для этого планировщик. Он работает, устанавливая задержку в канале очереди.   -  person Sandeesh    schedule 16.05.2017
comment
Никто на самом деле не ответил на последний вопрос: надежна ли эта функция в течение длительного времени? Я знаю, что Amazon SQS позволяет использовать только 15 минут, но я использую свой собственный beanstalk. Могу ли я запланировать отправку определенного электронного письма через три дня?   -  person jeff-h    schedule 28.07.2017


Ответы (1)


Из того же документа, который вы связали

Этот метод автоматически помещает задание в очередь, чтобы сообщение отправлялось в фоновом режиме. Конечно, перед использованием этой функции вам необходимо настроить очереди.

Laravel использует очереди, чтобы позаботиться об этом. Вам необходимо включить очередь в отправляемом почтовом сообщении. Отложенная отправка почты также использует те же очереди. Чтобы использовать эту функцию, вам необходимо настроить очередь и запустить прослушиватель очереди или рабочий процесс для обработки очередей. Дополнительную информацию см. В документации по очередям.

https://laravel.com/docs/5.4/queues

person Sandeesh    schedule 16.05.2017
comment
Хорошо, я вижу, он использует систему очередей. К сожалению, Amazons SQS не поддерживает задержки более 15 минут. :( - person miho; 16.05.2017
comment
@miho Ye, это настоящий провал. Об этом тоже явно предупреждают в документе. The Amazon SQS queue service has a maximum delay time of 15 minutes. - person Sandeesh; 16.05.2017
comment
Да, я это читал. Я также перепроверил с собственной документацией Amazons, но это все еще так (docs.aws.amazon.com/AWSSimpleQueueService/latest/). - person miho; 16.05.2017
comment
Спасибо. Я заблудился из-за той же проблемы. Я был исправлен, но ваш ответ хорош. - person Ave; 05.06.2017