まず、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のすべての美しさを使いたいです。
間違いを指摘してください。
前もって感謝します
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
回帰のようです。 #3624 を作成して、問題を調査しました。サンプルプロジェクトをありがとう!