Мое веб-приложение выполняется с помощью php на сервере Linux, мы используем библиотеку swift-mailer для доставки электронной почты из веб-приложения на наш собственный почтовый сервер.
Дело в том, что мне нужно отслеживать каждое электронное письмо (отправленное или не отправленное), которое обрабатывает веб-сервер, поэтому в случае отказа почтового сервера мы можем повторно отправлять электронные письма, которые не были отправлены, когда почта сервер снова работает Наша бизнес-модель основана на отправке электронных писем клиентам.
Короче говоря, нам нужно хранить каждое электронное письмо, которое не было отправлено по какой-либо причине (как правило, из-за того, что почтовый сервер не работает).
Я полагаю, что это может быть сделано, проверяя параметр $failures
в SwiftMailer::send()
, если электронное письмо не было отправлено, и сохраняя его в таблице базы данных (mail_failures) или в файле внутри каталога (mail / failures /) .
Мое предложение:
- вставить любое письмо в очередь отправки
- удалить почту из очереди при отправке или изменить ее статус на неудачную, если не отправлена
- использовать cronjob для вызова php-скрипта, который обрабатывает отправку почты из очереди
- отчет о том, что в очереди есть электронное письмо со статусом ошибки *
Я бы использовал таблицы базы данных, а не системные файлы
Это правильный способ сделать это? Какие-нибудь идеи или способы улучшить это? Любое программное обеспечение, которое обрабатывает это автоматически?
Может ли это быть обработано через ZeroMQ?