В рамках обучающей серии по Spring Boot в этой статье мы рассмотрим способ отправки электронных писем с помощью Spring. Отправка электронных писем — одна из базовых функций, которая может понадобиться в любом приложении. Из этой статьи вы узнаете, как отправлять электронные письма с помощью Spring. Для отправки электронных писем вам потребуются данные SMTP-сервера. В качестве примера вы можете использовать SMTP для Gmail (имейте в виду, что у Gmail есть определенные ограничения по отправке электронной почты). Интерфейс JavaMailSender в Spring Framework предлагает простую абстракцию для отправки электронной почты, а Spring Boot производит автоматическую настройку этого интерфейса и стартового модуля. Чтобы добавить функцию автоконфигурации Spring Boot в приложение, нам нужно внести spring-boot-starter-mail в файл pom.xml. Ниже представлен фрагмент нашего файла pom.xml: После того как мы определили зависимости, следующим шагом будет добавление конфигурации почты для автоматической настройки с помощью Spring Boot: Приведенные выше значения конфигурации относятся к SMTP-серверу Gmail. При необходимости замените их своими Далее мы создадим простой класс службы электронной почты, который позволит нашему приложению отправлять электронные письма. В нашем примере почтовой службы мы реализуем два метода: отправка простых электронных писем; отправка электронных писем с вложением. Наш код будет выглядеть так: Создадим простой контроллер REST, чтобы проверить, как работает код. У нашего контроллера REST будет два метода. Сам контроллер будет выглядеть так: Запустите приложение и перейдите по следующим ссылкам: Прежде чем использовать SMTP-сервер Gmail, ознакомьтесь со следующей статьей. Из-за дополнительных мер безопасности в Gmail ваш обычный пароль от электронной почты работать не будет.  В предыдущем разделе мы рассмотрели, как отправлять электронные письма с помощью Spring. Однако для рабочего приложения понадобится более продвинутый способ. В этом разделе мы рассмотрим, как отправлять электронные письма с помощью Spring Boot и Thymeleaf. Thyleleaf — это шаблонизатор. Thymeleaf поможет нам отправлять электронные письма в формате HTML с широкими функциональными возможностями. Предположим, мы хотим отправить клиенту электронное письмо для подтверждения его учетной записи. Для большей универсальности создадим класс EmailContext, содержащий всю основную информацию, которая нам нужна для электронной почты. Наш класс будет выглядеть так: Рассмотрим несколько полей этого класса: templateLocation — указывает расположение HTML-шаблона. Это поле понадобится нам для генерации окончательного вывода. context — содержит все динамические значения, передаваемые в электронном письме. Thymeleaf будет использовать эту карту для замены выражений фактическими значениями (например, ваше имя и т. д.). Далее мы настроим нашу службу электронной почты на обработку HTML-шаблонов Thymeleaf для наполнения электронных писем. В приведенном выше коде есть несколько важных моментов. Мы создаем и настраиваем карту как набор переменных. Thymeleaf будет использовать этот контекст для замены заполнителей или выражений значениями, переданными через него. SpringTemplateEngine представляет собой абстракцию различных шаблонизаторов, эта функция осуществляет выбор настроенного шаблонизатора. В нашем случае это Thymeleaf. Функция templateEngine.process() отвечает за обработку и возврат результата в виде строки. Она выбирает шаблон HTML, обработает его и заменяет выражения фактическими значениями. Наконец, мы встраиваем получившийся результат в MimeMessage и заставляем почтовый сервер обрабатывать его как HTML (mimeMessageHelper.setText(emailContent, true)) Вот наш HTML-шаблон для электронного письма (для экономии места я немного сократил HTML-код). Имейте в виду, что необходимо внести в контекст значения для ${firstName} и ${verifyURL}, чтобы Thymeleaf мог подставить фактические значения для этих переменных во время обработки. В этой статье мы узнали, как отправлять электронные письма с помощью Spring. Мы узнали, каким образом можно реализовать функции электронной почты с применением автоконфигурации Spring Boot. Исходный код, приведенный в этом посте, доступен на GitHub. Перевод материала подготовили в преддверии старта курса онлайн-курса «Разработчик на Spring Framework». Приглашаем также всех желающих на открытый вебинар «Spring в Docker. Практические советы». На занятии мы рассмотрим всем известную тему по запуску Spring-приложений в Docker-контейнере и не всем известные решения возникающих задач.   Редактор