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发送邮件吗?
答案 0 :(得分:15)
您正在尝试与非SSL端口建立SSL连接。这不起作用。
如果您想通过Gmail发送邮件,请参阅常见问题解答:http://java.sun.com/products/javamail/FAQ.html#gmail
答案 1 :(得分:7)
尝试通过smtp.live.com上的Hotmail SMTP服务器发送电子邮件时,我遇到了同样的异常。以下是最终对我有用的设置:
mail.smtp.starttls.enable=true
mail.smtp.port=587
答案 2 :(得分:2)
如果您不想使用SSL,并且您使用的是smtp而不是smtps,请尝试这些设置
mail.smtp.starttls.enable=false
mail.transport.protocol=smtp
答案 3 :(得分:2)
正如Andersen所说,对非SSL端口进行SSL连接(mail.smtp.ssl.enable=true
)会引发此错误。
这通常是由连接到错误的端口引起的,因为许多流行的邮件服务使用端口587而不是默认的smtps端口465。 这适用于GMail,Hotmail/Live Mail和Yahoo Mail。
然而,我的问题是,即使我将ssl设置为false,Java Mail也坚持使用SSL。
在跟踪源代码之后,问题是我使用Session.getDefaultInstance
,从一些示例代码复制。
它只在第一次调用时创建具有给定属性的会话;子序列调用将返回旧会话,而不是新会话。
切换到Session.getInstance
,确保它使用我传入的属性,并解决了我的" SSLException:无法识别的SSL消息"。
答案 4 :(得分:0)
使用Gmail时我遇到了这个问题。
要使用Gmail,我必须开启"允许使用安全性较低的应用" 。
此Gmail设置可在登录Gmail帐户后在https://www.google.com/settings/security/lesssecureapps找到。