Когда я должен "отправлять почту по очереди" с помощью модуля SMTP?


На странице конфигурации модуля SMTP в /admin/config/system/smtp предлагается опция Отправлять почту по очереди ( Письма будут отправляться с помощью api очереди drupal.).

Когда я захочу установить этот флажок? Каковы преимущества и недостатки?

Author: Patrick Kenny, 2016-03-24

3 answers

TL;DR: отправляйте электронное письмо по очереди, если вы отправляете большее количество электронных писем одновременно или если вашему SMTP-серверу требуется больше времени для обработки запроса (по какой-либо причине).

Ниже приведен краткий обзор основных плюсов/минусов.

Плюсы

  • Улучшенная обработка большого объема электронных писем. Задача отправки электронной почты будет разделена на пакеты, и Drupal будет обрабатывать их небольшими порциями во время выполнения cron. Это лучше, потому что ваш сервер может истечь время ожидания или перестать отвечать на запросы для посетителей, если вы пытаетесь отправить 500 электронных писем одновременно.
    Если одна и та же задача будет разделена на несколько пакетов, их будет легче обрабатывать, и обычные посетители не будут испытывать такого большого снижения производительности.

Минусы

  • Требуется более частый cron (или пользовательский скрипт, который будет обрабатывать пакеты), что приводит к увеличению количества используемых ресурсов в любое время. Вы можете увидеть определенное снижение производительности, если сайт обрабатывает пакеты электронной почты и там одновременно в сети много пользователей. Это, конечно, зависит от многих факторов (количество отправляемых вами электронных писем, частота вашего cron, скорость, с которой удаленный SMTP-сервер обрабатывает запросы, количество посетителей на вашем сайте, сложность и так далее).
    Смотрите Модуль Elysia Cron для точной настройки реализаций cron всех модулей на вашем сайте. Это поможет вам использовать меньше ресурсов во время каждого запуска cron, потому что вы сможете выбирать, как часто будет выполняться cron определенных модулей быть запущенным.

  • В некоторых случаях это может привести к замедлению доставки электронной почты. Если вам нужно доставить большое количество электронных писем (например, список подписок на рассылку 100 тысяч), последний пользователь в очереди получит сообщение значительно позже, чем первый. Кроме того, все электронные письма, запрошенные для отправки в течение этого времени, также будут отложены.

 7
Author: Aram Boyajyan, 2020-06-15 09:13:00

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

Спрашивающий не говорит, какую версию модуля SMTP они используют, но в текущей версии 8.x-1.0-beta3 нет возможности стоять в очереди (к сожалению). Тем не менее, плюсы и минусы очереди, которые кажутся мне очевидными, заключаются в следующем:

Плюсы: Если не удается связаться с SMTP-сервером, для по любой причине, и очереди нет, тогда электронное письмо просто не отправляется (и возвращается ошибка). Если есть очередь, то отправка будет повторена позже, и, надеюсь, электронное письмо в конечном итоге будет отправлено.

Минусы: Если есть очередь, часть приложения, которая хотела отправить электронное письмо, не знает, когда (или даже если) электронное письмо действительно было отправлено. Когда у вас есть очередь, у вас также должно быть что-то, что отслеживает очередь и выдает предупреждение в случае возникновения проблемы.

 3
Author: David-o, 2017-11-15 21:53:43

Мы также сделали это, чтобы контролировать скорость потока электронной почты.

Кроме того, наш SMTP-сервер работает немного медленно, и иногда по неизвестной причине возникают ошибки на этапе аутентификации, после чего нам нужно будет повторить попытку, пока не будет отправлено электронное письмо. Используя очередь, пользователю не нужно ждать, вместо этого мы немедленно возвращаем им экран подтверждения, а затем позволяем очереди smtp и повторным ошибкам в очереди позаботиться об отправке электронной почты позже.

Обратите внимание, что вам не нужно запускать весь cron, вы можете просто запустить команду drush queue - запустить smtp_send_queue, и она должна отправлять ваши электронные письма.

 1
Author: Cameron, 2017-10-03 04:56:10