javax.mail.MessagingException: Exception reading response;
nested exception is:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.Sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.Java:1764)
at com.Sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.Java:1523)
at com.Sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.Java:453)
at javax.mail.Service.connect(Service.Java:313)
at javax.mail.Service.connect(Service.Java:172)
at javax.mail.Service.connect(Service.Java:121)
at javax.mail.Transport.send0(Transport.Java:190)
at javax.mail.Transport.send(Transport.Java:120)
at javaapplication5.SendMail.send(SendMail.Java:77)
at javaapplication5.SendMailTest.main(SendMailTest.Java:17)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.Sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(InputRecord.Java:523)
at com.Sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.Java:355)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:789)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1112)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.Java:744)
at com.Sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.Java:75)
at com.Sun.mail.util.TraceInputStream.read(TraceInputStream.Java:106)
at Java.io.BufferedInputStream.fill(BufferedInputStream.Java:218)
at Java.io.BufferedInputStream.read(BufferedInputStream.Java:237)
at com.Sun.mail.util.LineInputStream.readLine(LineInputStream.Java:84)
at com.Sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.Java:1742)
... 9 more
誰かがプロキシを使用してJavaMail APIを使用してメールを送信するのを手伝ってくれる?
非SSLポートへのSSL接続を試みています。これは機能しません。
Gmail経由でメールを送信する場合は、FAQを参照してください: http://Java.Sun.com/products/javamail/FAQ.html#gmail
Smtp.live.comにあるHotmail SMTPサーバーを介して電子メールを送信しようとすると、同じ例外が発生しました。最後に私のために働いた設定は次のとおりです:
mail.smtp.starttls.enable=true
mail.smtp.port=587
SSLを使用したくない場合で、smtpsではなくsmtpを使用している場合は、次の設定を試してください。
mail.smtp.starttls.enable=false
mail.transport.protocol=smtp
アンデルセンが答えたように、SSL接続(mail.smtp.ssl.enable=true
)を非SSLポートに接続すると、このエラーがスローされます。
多くの一般的なメールサービスはデフォルトのsmtpsポート465の代わりにポート587を使用するため、これは一般に間違ったポートに接続することによって引き起こされます。これは GMail 、 Hotmail/Live Mail に適用されます。および Yahoo Mail 。
しかし、私の問題は、Javaメールは、sslをfalseに設定した場合でもSSLの使用を要求することです。
ソースコードをトレースした後、問題は私が使用した Session.getDefaultInstance
、いくつかのサンプルコードからコピー。最初の呼び出しで、指定されたプロパティを持つセッションのみが作成されます。以降の呼び出しでは、新しいセッションではなく、古いセッションが返されます。
Session.getInstance
渡したプロパティを使用していることを確認し、「SSLException:Unrecognized SSL message」を解決しました。
Gmailを使用しているときにこの問題に直面していました。
Gmailを使用するには、「安全性の低いアプリを許可する」をオンにする必要がありました。
このGmailの設定は、 https://www.google.com/settings/security/lesssecureapps にあります。Gmailアカウントにログインすると表示されます。