23
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 发送邮件吗?

4

5 回答 5

15

您正在尝试与非 SSL 端口建立 SSL 连接。这行不通。

如果您想通过 gmail 发送邮件,请参阅常见问题解答:http: //java.sun.com/products/javamail/FAQ.html#gmail

于 2009-07-21T07:41:53.703 回答
7

尝试通过 smtp.live.com 上的 Hotmail SMTP 服务器发送电子邮件时,我遇到了同样的异常。以下是最终对我有用的设置:

mail.smtp.starttls.enable=true 
mail.smtp.port=587
于 2010-03-07T19:07:28.037 回答
2

如果您不想使用 SSL,并且使用 smtp 而不是 smtps,请尝试以下设置

mail.smtp.starttls.enable=false
mail.transport.protocol=smtp
于 2013-08-22T20:03:47.777 回答
2

正如 Andersen 所回答的,mail.smtp.ssl.enable=true对非 SSL 端口进行 SSL 连接 () 将引发此错误。

这通常是由于连接到错误的端口造成的,因为许多流行的邮件服务使用端口 587 而不是默认的 smtps 端口 465。这适用于GMailHotmail/Live MailYahoo Mail

然而,我的问题是,即使我将 ssl 设置为 false,Java Mail 仍坚持使用 SSL。

跟踪源代码后,问题是我使用的Session.getDefaultInstance,从一些示例代码中复制而来。它仅在第一次调用时创建具有给定属性的会话;子序列调用将返回旧会话,而不是新会话。

切换以Session.getInstance确保它使用我传入的属性,并解决了我的“SSLException:无法识别的 SSL 消息”。

于 2016-06-16T06:39:11.063 回答
0

我在使用 Gmail 时遇到了这个问题。

为了使用 Gmail,我必须打开“允许不太安全的应用程序”

登录 gmail 帐户后,可以在https://www.google.com/settings/security/lesssecureapps找到此 Gmail 设置。

于 2018-03-23T21:24:26.687 回答