Подтвердить что ты не робот

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.
Пожалуйста, укажите мне свои ошибки.

Заранее спасибо

4b9b3361

Ответ 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, чтобы исследовать проблему. Спасибо за образец проекта!