Пользователи Gmail могут использовать SMTP-сервер Gmail smtp.gmail.com для отправки электронных писем из своих приложений Spring Boot. Для этого давайте сделаем некоторые настройки в приложении:
- Укажите свойства SMTP-соединения в файле application.properties :
1234567
spring.mail.host=smtp.gmail.com
spring.mail.username=<your gmail/google app email>
spring.mail.password=*****
spring.mail.port=
587
spring.mail.properties.mail.smtp.starttls.enable=
true
spring.mail.properties.mail.smtp.auth=
true
spring.mail.properties.mail.smtp.starttls.required=
true
- Используйте библиотеку инструментов Spring Boot Email — которая является оболочкой для начальной библиотеки Spring Boot Email. Добавьте следующее в ваш pom.xml :
12345
<
dependency
>
<
groupId
>it.ozimov</
groupId
>
<
artifactId
>spring-boot-email-core</
artifactId
>
<
version
>0.6.3</
version
>
</
dependency
>
- Пометьте основной класс вашего приложения (т. Е. Класс, аннотированный @SpringBootApplication ) с помощью @EnableEmailTools :
1234567
@SpringBootApplication
@EnableEmailTools
public
class
EmailApplication {
public
static
void
main(String[] args){
SpringApplication.run(EmailApplication.
class
, args);
}
}
- Давайте напишем тест, который использует bean- компонент it.ozimov.springboot.mail.service.EmailService для отправки электронного письма:
01020304050607080910111213141516171819202122
@RunWith
(SpringRunner.
class
)
@SpringBootTest
public
class
EmailServiceTest {
@Autowired
it.ozimov.springboot.mail.service.EmailService emailService;
@Value
(
"${spring.mail.username}"
) String fromEmail;
@Test
public
void
testSendEmail()
throws
UnsupportedEncodingException {
User user =
new
User();
user.setDisplayName(
"Mohamed Sanaulla"
);
final
Email email = DefaultEmail.builder()
.from(
new
InternetAddress(fromEmail,
"From Name"
))
.to(Lists.newArrayList(
new
InternetAddress(
user.getEmail(), user.getDisplayName())))
.subject(
"Testing email"
)
.body(
"Testing body ..."
)
.encoding(
"UTF-8"
).build();
emailService.send(email);
}
}
Если все хорошо, вы должны получить электронное письмо в свой почтовый ящик.
Но не все было хорошо, когда я попробовал приведенный выше код, и проблема, с которой я столкнулся, была следующим исключением:
1
2
3
4
5
6
7
8
9
|
Caused by: javax.mail.AuthenticationFailedException: 534 - 5.7 . 14 <https: //accounts.google.com/signin/continue?sarp=1≻c=1&plt=AKgnsbs2 534 - 5.7 . 14 tEY84q9p029iw1YKFy_d8O1vYNwHLixZUNHZlZbIqZki9a-EBfcUTPIenD2i6pN704O_7S 534 - 5.7 . 14 DK4FC- 8 -l1K1gU537F4UxjN4v4_txZ5pqxEA8ATwDhmOBzvxAYApfJTQjHL1yhHouwbhGO 534 - 5.7 . 14 LhOzSAB6Va6u-enaDfcv73dEgv1TT4b19dBfgzIkOoz_7nJ3i-LwWxZqIRyxOEnu8iNIYQ 534 - 5.7 . 14 iV27v9s4HFOrpSOJNGufv1Hg0wU5s> Please log in via your web browser and 534 - 5.7 . 14 then try again. 534 - 5.7 . 14 Learn more at 534 5.7 . 14 https: //support.google.com/mail/answer/78754 q6sm2366693pgp.58 - gsmtp |
Причиной этой ошибки было то, что моя электронная почта Gmail / G Suite (т.е. электронная почта с использованием настраиваемого домена) не была настроена для отправки электронной почты из менее безопасных приложений, таких как наше. Для этого вам необходимо посетить: https://www.google.com/settings/security/lesssecureapps и включить переключатель « Разрешить менее безопасные приложения », который выглядит следующим образом:
Иногда, когда вы посещаете ссылку на менее безопасные приложения, вы видите что-то, как показано ниже:
В таком случае вы можете использовать G Suite, и вам нужно, чтобы ваш администратор включил функцию менее безопасных приложений, и это можно сделать, выполнив следующие действия:
- Перейдите на страницу http://google.com/a/ < домена >
- Перейдите к настройке безопасности из меню, как показано на рисунке ниже:
- Нажмите « Основные настройки » на странице настроек безопасности, как показано ниже:
- На странице «Основные настройки» найдите раздел « Менее безопасные приложения » и нажмите « Перейти к настройкам для менее защищенных приложений », как показано ниже:
- Теперь на странице Менее безопасные приложения у вас есть следующие опции:
Выберите « Разрешить пользователям управлять своим доступом к менее защищенным приложениям » и нажмите кнопку « Сохранить» , доступную внизу страницы. Это позволит отдельным пользователям контролировать доступ к своей электронной почте из менее безопасных приложений.
Теперь перейдите на страницу https://www.google.com/settings/security/lesssecureapps, и теперь вы сможете увидеть переключатель для обновления параметра « Разрешить менее безопасные приложения ».
Ссылка: | Используя Gmail в качестве SMTP-сервера из Java, приложения Spring Boot от нашего партнера по JCG Мохамеда Санауллы в блоге Experiences Unlimited . |