web-dev-qa-db-ja.com

Spring Boot 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のすべての美しさを使いたいです。
間違いを指摘してください。

前もって感謝します

22
InsFi

Java Mailにリグレッション/動作の変更があるようです。 変更 は1.5.3と1.5.4の両方にあります。アプリはJava Mail 1.5.2を使用するため、Boot 1.2.0で動作します。 Java Mail 1.5.4を使用するため、Boot 1.2.5で失敗します。

1.5.3+の問題は、SMTPトランスポートがポート465で接続し、GMailがSSLハンドシェイクを期待していることです。 Java MailはSSLを使用していないと誤って判断するため、ハンドシェイクを開始せず、接続試行が(最終的に)タイムアウトします。 SSLの使用を明示することにより、Java Mailに正しいことをさせることができます。以下をapplication.propertiesに追加します。

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

回帰のようです。 #3624 を作成して、問題を調査しました。サンプルプロジェクトをありがとう!

3
Stephane Nicoll