web-dev-qa-db-fra.com

Spring Boot 1.2.5.RELEASE - Envoi d'e-mails via Gmail SMTP

Tout d'abord, je dois dire que l'envoi d'e-mails avec 1.2.0.RELEASE fonctionne bien

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>


Après avoir changé la version parent en 1.2.5.LELEASE l'envoi d'e-mails n'a pas fonctionné

Docs dit: Si spring.mail.Host et les bibliothèques pertinentes (telles que définies par spring-boot-starter-mail) sont disponibles, un JavaMailSender par défaut est créé si aucun n'existe.


J'ai donc ajouté

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

Cela n'a pas aidé et je l'ai remplacé par

<dependency>
    <groupId>com.Sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.4</version>
</dependency>

J'ai aussi essayé

spring.mail.Host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.port = 465

Résultat le même.

Ce n'est pas un problème de créer et de configurer @Bean manuellement. Mais je veux utiliser toute la beauté de Spring Boot.
Veuillez me signaler mes erreurs.

Merci d'avance

22
InsFi

Il semble qu'il y ait un changement de régression/comportement dans Java Mail. Le changement est à la fois dans 1.5.3 et 1.5.4. Votre application fonctionne avec Boot 1.2.0 car il utilise Java Mail 1.5.2. Il échoue avec Boot 1.2.5 car il utilise Java Mail 1.5.4.

Le problème dans 1.5.3+ semble être que le transport SMTP se connecte sur le port 465 et GMail attend une prise de contact SSL. Java Mail pense à tort qu'il n'utilise pas SSL, il n'initie donc jamais la poignée de main et la tentative de connexion expire. Vous pouvez convaincre Java Mail de faire le bonne chose en étant explicite sur l'utilisation de SSL. Ajoutez ce qui suit à application.properties:

spring.mail.properties.mail.smtp.ssl.enable = true
36
Andy Wilkinson

Il semble que ce soit une régression. J'ai créé # 3624 pour enquêter sur le problème. Merci pour l'exemple de projet!

3
Stephane Nicoll