Spring JavaMailSenderImpl отправка почты с gmail.com и mail.ru

Предположим, что у нас есть учётная запись mail.ru с логином uhb0f84h@mail.ru и паролем dhg9j49h0gnj904h и учётная запись gmail.com с логином ciwh39ht9dxjs94h@gmail.com и паролем as8o40tn4. В этой статье я подробно распишу настройку org.springframework.mail.javamail.JavaMailSenderImpl  для отправки почты через эти сервисы.

JavaMailSenderImpl реализует интерфейс org.springframework.mail.javamail.JavaMailSender и служит для отправки почты по протоколу SMTP (это такой протокол для отправки сообщений электронной почты, использующийся почтовыми клиентами).

Для начала нужно создать структуру для Maven. В качестве groupId будет использоваться ru.urvanov.javaexamples , а в качестве artifactId — spring-java-mail-sender-impl.

Теперь нужно подключить Spring Framework  и тот его артефакт, в котором содержится JavaMailSenderImpl. Это весьма странно, но пакет org.springframework.mail  содержится в артефакте spring-context-support. По названию тут, конечно, никак не догадаешься:

В раздел properties, разумеется, нужно добавить переменную с версией Spring Framework:

 

Также для отправки почты нужно подключить библиотеку JavaMail:

Полный pom.xml получился таким:

Настройки для учётной записи mail.ru расположим в src/main/resources/mail.ru.properties:

Для учётной записи gmail.com в src/main/resources/gmail.com.properties:

Все эти настройки легко находятся в справочных системах этих сервисов. Можно настроить отправку почты через любой другой сервис, поддерживающий SMTP.

В контексте приложения нужно создать два бина: JavaMailSender и шаблон письма. Бин JavaMailSender необходимо инициализировать настройками своей учётной записи из соответствующего файла, а в шаблоне письма достаточно заполнить поле From. Полный applicationContext.xml  выглядит так:

Этот файл должен лежать по пути src/main/resources/applicationContext.xml. Обратите внимание, что в приведённом примере context:property-placeholder , загружающий настройки для  mail.ru закомментирован, и настройки загружаются из gmail.com.properties. Чтобы отправлять письма через mail.ru вам нужно раскомментировать соответствующую строку и закомментировать строку для gmail.com

Осталось написать сам код, который будет инициализировать контейнер бинов Spring Framework, вытаскивать mailSender, templateMessage и отправлять сообщение на какой-нибудь e-mail.

Файл src/main/java/ru/urvanov/javaexamples/springjavamailsenderimpl.App.java:

Готово. Теперь можно запустить App.java на компиляцию и исполнение в IDE и письмо отправится.  Можно также в включить опцию mail.debug в true в свойстве javaMailProperties у объекта JavaMailSenderImpl, и тогда в консоль будет попадать отладочный вывод, что позволит узнать, что произошло на самом деле, если при отправке почты возникает исключение.

Исходники примера на GitHub (поставьте звезду, пожалуйста)

Скачать исходники проекта в виде ZIP-архива (spring-java-mail-sender-impl)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *