Это нормально, чтобы отправить письмо из другой темы, как это? - PullRequest
6 голосов
/ 29 июня 2011

На веб-сайте иногда отправка электронного письма занимает несколько секунд, поэтому мне нужно отправить электронное письмо из другого потока, чтобы не ждать, пока письмо отправлено.

Я нашел этот ответ на stackoverflow, нормально ли это делать таким образом, если я отправлю только одно электронное письмо на запрос?

Или есть другой стандартный способ сделать это?

Ответы [ 2 ]

4 голосов
/ 29 июня 2011

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

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

2 голосов
/ 29 июня 2011

Создание новых потоков внутри обработчика запросов потенциально опасно: если вы получите скачок трафика, вы можете создать достаточно потоков, которые усугубят скачок.

Лучше было бы передать почтуотправка другому процессу с помощью такого инструмента, как beanstalkd или другой очереди сообщений, или использование системной команды mail (команда mail(1) моей системы Linux может поставить сообщение электронной почты в очередь на 0,07 секунды, что достаточно дляумеренная загрузка почты).

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

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