Мое приложение заботится о регистрации пользователя (с возможностью получать уведомления по электронной почте) и может легко обрабатывать фактическое отображение электронной почты на основе шаблона для данного пользователя.JavaMail обеспечивает транспортный уровень почты.Но как мне спроектировать прикладной уровень между бизнес-объектами (например, пользователем) и почтовым транспортом?
Простым подходом будет простой синхронный цикл: перебирайте пользователей, ставьте в очередь электронные письма и выполняйтес этим.«Очередь» может означать отправку их прямо в MTA (почтовый сервер) или в очередь в памяти для использования другим потоком.
Однако , я также планирую реализовать функциинапример, снижение скорости отправки электронных писем, обработка отсканированных писем (NDR) и поддержание статуса при перезапуске приложений.Моя интуиция заключается в том, что хороший дизайн максимально отделил бы это от уровня бизнеса и уровня транспорта почты.Я задавался вопросом, решали ли раньше эту проблему другие, но после долгих поисков я не нашел библиотек Java, которые бы подходили для этой проблемы.Автономные почтовые приложения, такие как James или серверы списков, слишком велики;такие пакеты, как MailSender Spring или Commons Email слишком малы по объему (по сути, являются заменой JavaMail).Для других языков я также не нашел ничего подходящего.
Мне интересно, как другие разработчики пошли на добавление массовой рассылки в свои приложения.