2015-07-30 6 views
21

Zunächst muss ich sagen, dass mit 1.2.0.RELEASE feinenFrühling Stiefel 1.2.5.RELEASE - Senden von E-Mail über Google Mail SMTP

application.properties funktioniert E-Mail zu senden:

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> 


Nach dem Wechsel Mutter Version 1.2.5.RELEASE E-Mail nicht funktioniert das Senden

Docs sagt hat: Wenn spring.mail.host und die relevanten Bibliotheken (wie durch Spring-Boot-Starter-Mail definiert) verfügbar sind, wird ein Standard-JavaMailSender erstellt, wenn kein vorhanden ist ts.


Also habe ich hinzugefügt

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

Es hat nicht geholfen, und dann habe ich es ersetzt

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

Auch habe ich versucht

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

Ergebnis gleich.

Es ist kein Problem, @Bean manuell zu erstellen und zu konfigurieren. Aber ich möchte alle Schönheit von Spring Boot nutzen.
Bitte weisen Sie mich auf meine Fehler.

Vielen Dank im Voraus

+0

Was ist also die Fehlermeldung? – dunni

+0

@dunni, Es gibt keine Fehlermeldung.Absender-Thread friert einfach ein – InsFi

+0

Sie haben also ein Beispielprojekt mit Spring Boot 1.2.0 und es funktioniert. Und dann wechselst du einfach zum Springboot 1.2.5 und dann bricht es? Soweit ich sehen kann, hat sich zwischen diesen beiden Versionen nichts geändert. Können Sie das Projekt teilen? –

Antwort

34

Es scheint eine Regression/Verhaltensänderung in Java Mail zu sein. The change ist in beiden 1.5.3 und 1.5.4. Ihre App arbeitet mit Boot 1.2.0, da sie Java Mail 1.5.2 verwendet. Es schlägt mit Boot 1.2.5 fehl, da es Java Mail 1.5.4 verwendet.

Das Problem in 1.5.3+ scheint zu sein, dass der SMTP-Transport auf Port 465 verbindet und GMail einen SSL-Handshake erwartet. Java Mail denkt fälschlicherweise, dass es kein SSL verwendet, so dass es niemals den Handshake initiiert und der Verbindungsversuch (eventuell) das Zeitlimit überschreitet. Sie können Java Mail dazu bringen, das Richtige zu tun, indem Sie ausdrücklich auf die Verwendung von SSL hinweisen. Fügen Sie die folgende zu application.properties:

spring.mail.properties.mail.smtp.ssl.enable = true 
+0

Arbeitete für mich auch. Ich hatte einen zusätzlichen Fehler aufgrund meines Antivirus. Sobald ich den Mail-Schutz darauf deaktiviert hatte, wurde die Nachricht erfolgreich gesendet – Juanal

+0

Diese Antwort war sehr nützlich. Ich benutzte es, zusammen mit der Verwendung von Spring-Boot "spring.mail.test-connection = true", um mein Problem schnell zu lösen. –

3

Es sieht aus wie es eine Regression ist. Ich habe #3624 erstellt, um das Problem zu untersuchen. Danke für das Beispielprojekt!