2009-07-21 102 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消息”。

相关问题