20 декабря 2021
Тэги: gradle, Kotlin, Spring, Spring Boot, YouTube.
Рассмотрим как отправлять email в Spring Boot. Вы также можете посмотреть исходники этого примера на github. Данный материал также доступен в формате видео на YouTube.
Для начала создадим новый gradle-проект (проще всего это сделать с помощью Spring Initializr). В проекте должна быть такая зависимость (пример для gradle):
Стартер spring-boot-starter-mail добавляет саму функциональность работы с email, причём можно использовать обёртку над стандартным классом Java.
Создадим новый сервис EmailService и внедрим в него JavaMailSender, а также пару свойств из конфига.
В файл application.yml добавим такие параметры:
Тут мы указываем хост и порт нашего mail-сервера, а также логин/пароль для доступа к нему. Параметр test-connection отвечает за проверку подключения к серверу при старте приложения. Параметр sender.email содержит email, который должен быть указан в качестве отправителя, а sender.text - произвольное текстовое название для этого email.
Теперь добавим в наш сервис пару методов. Отправка простого текстового письма без форматирования выглядит так:
Тут мы создаём новый экземпляр сообщения SimpleMailMessage. Устанавливаем отправителя (из конфига) и получателя письма. Задаём тему письма через метод setSubject() и текст письма через setText(). Затем отправляем письмо. Как видите, ничего сложного. В результате получатель получит обычное текстовое письмо.
Но если мы хотим отформатировать текст (например, сделать жирным или курсивом), то следует использовать следующий метод:
Здесь мы создаём новое сообщение через createMimeMessage(). Затем для работы с ним используем обёртку MimeMessageHelper. В качестве отправителя устанавливаем объект InternetAddress, который содержит не только email отправителя, но и его текстовый алиас (произвольный текст для удобства). В остальном этот метод похож на предыдущий. Сам форматированный текст устанавливаем через метод setText() с флагом true, который указывает на то, что это html.
Как видите, второй метод позволяет форматировать текст сообщения, а потому рекомендуется использовать его для отправки email.
Kotlin, Java, Java 16, Java 11, Java 10, Java 9, Java 8, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.