Для отправки email на Middleware следует использовать бин EmailerAPI
, на клиентском уровне - сервис EmailService
.
Рассмотрим основные методы этих компонентов:
-
sendEmail()
- синхронная отправка сообщения. Вызывающий код блокируется на время отправки сообщения SMTP серверу.Сообщение может быть передано как в виде набора параметров (список адресатов через запятую, тема, содержимое, массив вложений), так и в виде специального объекта
EmailInfo
, инкапсулирующего всю эту информацию, плюс позволяющего явно задать адрес отправителя и сформировать тело письма по шаблону FreeMarker.При синхронной отправке может быть сгенерировано исключение
EmailException
, несущее в себе информацию о том, по каким адресам отправка не удалась, и соответствующие им сообщения об ошибках.В процессе работы метода для каждого адресата в базе данных создается экземпляр сущности
SendingMessage
, который сначала получает статусSendingStatus.SENDING
, а после успешной отправки -SendingStatus.SENT
. В случае ошибки отправки статус сообщения меняется наSendingStatus.NOTSENT
. -
sendEmailAsync()
- асинхронная отправка сообщения. Данный метод возвращает список (по числу получателей) экземпляровSendingMessage
со статусомSendingStatus.QUEUE
, созданных в базе данных. Собственно отправка производится при последующем вызове методаEmailManagerAPI.queueEmailsToSend()
, который необходимо зарегистрировать в механизме назначенных заданий с желаемой периодичностью.