3.9.2.1. Методы отправки

Для отправки email на Middleware следует использовать бин EmailerAPI, на клиентском уровне - сервис EmailService.

Рассмотрим основные методы этих компонентов:

  • sendEmail() - синхронная отправка сообщения. Вызывающий код блокируется на время отправки сообщения SMTP серверу.

    Сообщение может быть передано как в виде набора параметров (список адресатов через запятую, тема, содержимое, массив вложений), так и в виде специального объекта EmailInfo, инкапсулирующего всю эту информацию, плюс позволяющего явно задать адрес отправителя и сформировать тело письма по шаблону FreeMarker.

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

    В процессе работы метода для каждого адресата в базе данных создается экземпляр сущности SendingMessage, который сначала получает статус SendingStatus.SENDING, а после успешной отправки - SendingStatus.SENT. В случае ошибки отправки статус сообщения меняется на SendingStatus.NOTSENT.

  • sendEmailAsync() - асинхронная отправка сообщения. Данный метод возвращает список (по числу получателей) экземпляров SendingMessage со статусом SendingStatus.QUEUE, созданных в базе данных. Собственно отправка производится при последующем вызове метода EmailerAPI.processQueuedEmails(), который необходимо зарегистрировать в механизме назначенных заданий с желаемой периодичностью.