2009-07-21 131 views
22
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使用代理髮送郵件嗎?javax.net.ssl.SSLException使用JavaMail發送郵件時

+4

我認爲這會有幫助,如果您發佈您用於發送郵件的代碼:D – 2009-07-21 06:42:30

回答

7

嘗試通過在smtp.live.com Hotmail的SMTP服務器發送電子郵件時,我得到了同樣的異常。下面是最終爲我工作的設置:

mail.smtp.starttls.enable=true 
mail.smtp.port=587 
2

如果你不希望使用SSL,並且你正在使用的不是SMTPS SMTP嘗試這些設置

mail.smtp.starttls.enable=false 
mail.transport.protocol=smtp 
1

安徒生回答,對非SSL端口執行SSL連接(mail.smtp.ssl.enable=true)會引發此錯誤。

這通常是通過連接到錯誤的端口造成的,因爲許多流行的電子郵件服務使用端口587,而不是默認SMTPS端口465 這適用於GMailHotmail/Live MailYahoo Mail

但是,我的問題是,即使我將ssl設置爲false,Java Mail也堅持使用SSL。

追蹤源代碼後,問題出在我使用Session.getDefaultInstance,從一些示例代碼複製而來。 它只在第一次調用時創建與給定屬性的會話;子序列調用將返回該舊會話,而不是新會話。

切換到Session.getInstance確保它使用我傳入的屬性,並解決了我的「SSLException:無法識別的SSL消息」。

相關問題