Spring Загрузка 1.2.5.RELEASE - отправка электронной почты через Gmail SMTP
Во-первых, мне нужно сказать, что отправка электронной почты с помощью 1.2.0.RELEASE отлично работает
application.properties:
spring.mail.host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.socketFactory.port = 465
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
pox.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.0.RELEASE</version>
<relativePath/>
</parent>
.......
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
После изменения родительской версии на 1.2.5.RELEASE отправка электронной почты не сработала
Документы говорят:
Если доступны spring.mail.host и соответствующие библиотеки (как определено spring -boot-starter-mail), создается JavaMailSender по умолчанию, если он не существует.
Итак, я добавил
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
Это не помогло, а затем я заменил его на
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.4</version>
</dependency>
Также я пробовал -
spring.mail.host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.port = 465
Результат тот же.
Это не проблема для создания и настройки @Bean вручную. Но я хочу использовать всю красоту Spring Boot.
Пожалуйста, укажите мне свои ошибки.
Заранее спасибо
Ответы
Ответ 1
Похоже на изменение регрессии/поведения в Java Mail. Изменения находятся в обоих вариантах 1.5.3 и 1.5.4. Ваше приложение работает с Boot 1.2.0, так как использует Java Mail 1.5.2. Он не работает с Boot 1.2.5, поскольку использует Java Mail 1.5.4.
Проблема в 1.5.3+ состоит в том, что SMTP-транспорт подключается к порту 465, а GMail ожидает подтверждения SSL. Java Mail неправильно считает, что он не использует SSL, поэтому он никогда не инициирует рукопожатие, и попытка подключения (в конце концов) истекает. Вы можете убедить Java Mail правильно поступать, указав на использование SSL. Добавьте к application.properties
следующее:
spring.mail.properties.mail.smtp.ssl.enable = true
Ответ 2
Похоже, это регресс. Я создал # 3624, чтобы исследовать проблему. Спасибо за образец проекта!