Когда пользователи регистрируются на моем сайте, подключение моего сервера к нашему стороннему поставщику SMTP очень плохое, и приложению требуется от нескольких секунд до нескольких минут для подключения. Пока он пытается подключиться и отправить, пользователи вынуждены ждать там, а иногда они просто сдаются и покидают сайт.
Это ужасный пользовательский опыт. Как сделать так, чтобы это выглядело мгновенно (размещение собственного почтового сервера на данный момент не вариант)? Каким-то образом выполнить это в фоновом режиме? Может быть, используя какой-то механизм очередей?
Я использую стек LNAMP на машине CentOS 5 x64. Приложение использует CodeIgniter.
РЕДАКТИРОВАТЬ:
Похоже, что использование локального почтового сервера в качестве ретранслятора - обычное решение. Но как с помощью этого метода регистрировать или отслеживать правильность доставки электронной почты?
Примечание: некоторые ESP предоставляют REST API для доставки электронной почты (наши тоже). В настоящее время мы используем SMTP, а не их REST API.
Запустите локальный sendmail / qmail / postfix - что угодно, установите smtp-сервер на localhost. Локальный MTA будет стоять в очереди и доставить, когда сможет (сразу или при следующем запуске очереди).
В вашей системе:
# yum -y install sendmail
# chkconfig sendmail on
# service sendmail start
shoudl достаточно.
Я знаю про CodeIgniter, так что ничем не могу вам помочь.
Вы можете использовать Postfix в качестве рассылки нулевых сообщений (ретранслировать только на ISP). Это не более чем четырехстрочный текст:
main.cf
myorigin = $mydomain
relayhost = $mydomain
inet_interfaces = loopback-only
local_transport = error:local delivery is disabled
Ссылка: http://www.postfix.org/STANDARD_CONFIGURATION_README.html#null_client
Не уверен, насколько это распространено (хорошая практика), но отправка электронного письма - типичный асинхронный процесс. Тот, который может занять несколько секунд и больше. Это делает его идеальным кандидатом для использования очереди сообщений.
Метод доставки имеет второстепенное значение, но сторонние поставщики, такие как SendGrid (для транзакционных писем - забытый пароль, счет-фактура и т. Д.) Или MailChimp (для информационных бюллетеней и маркетинга), предлагают хорошую ценность и доказали свою надежность.
Под очередью сообщений я подразумеваю RabbitMQ (AMQ), ZeroMQ, Gearman, AWS SQS и т. Д. Их можно использовать для любого типа обмена информацией между приложениями. В данном случае это информация, которую необходимо отправить по электронной почте.
Что касается информации о доставке, ее можно получить через API с таким поставщиком или с более дорогими планами через обратный вызов.