java中的安全imap连接
我正在尝试使用在以下位置找到的java程序连接到我们的imap服务器,该服务器监听端口993: 我在Ubuntu上运行这个程序。 然而,我得到以下例外情况:java中的安全imap连接,java,ssl,imap,Java,Ssl,Imap,我正在尝试使用在以下位置找到的java程序连接到我们的imap服务器,该服务器监听端口993: 我在Ubuntu上运行这个程序。 然而,我得到以下例外情况: DEBUG: setDebug: JavaMail version 1.4ea DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc] DEBUG: mail.i
DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc]
DEBUG: mail.imap.fetchsize: 16384
javax.mail.MessagingException: Unrecognized SSL message, plaintext connection?;
nested exception is:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:479)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at org.myorg.IMAP.main(IMAP.java:40)
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:798)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:753)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at com.sun.mail.iap.ResponseInputStream.read0(ResponseInputStream.java:81)
at com.sun.mail.iap.ResponseInputStream.readResponse(ResponseInputStream.java:67)
at com.sun.mail.iap.Response.<init>(Response.java:83)
at com.sun.mail.imap.protocol.IMAPResponse.<init>(IMAPResponse.java:48)
at com.sun.mail.imap.protocol.IMAPResponse.readResponse(IMAPResponse.java:122)
at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:230)
at com.sun.mail.iap.Protocol.<init>(Protocol.java:91)
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:87)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:446)
... 3 more
DEBUG:setDebug:JavaMail版本1.4ea
调试:getProvider()返回javax.mail.Provider[STORE,imaps,com.sun.mail.imap.imapssltore,sun Microsystems,Inc]
调试:mail.imap.fetchsize:16384
javax.mail.MessaginException:无法识别的SSL消息,纯文本连接?;
嵌套异常是:
javax.net.ssl.SSLException:无法识别的ssl消息,纯文本连接?
在com.sun.mail.imap.IMAPStore.protocolConnect上(IMAPStore.java:479)
在javax.mail.Service.connect(Service.java:275)
在javax.mail.Service.connect(Service.java:156)
位于org.myorg.IMAP.main(IMAP.java:40)
原因:javax.net.ssl.SSLException:无法识别的ssl消息,纯文本连接?
位于com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(InputRecord.java:523)
位于com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:355)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:798)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:753)
位于com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
位于com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
在java.io.BufferedInputStream.fill处(BufferedInputStream.java:218)
在java.io.BufferedInputStream.read处(BufferedInputStream.java:237)
位于com.sun.mail.iap.ResponseInputStream.read0(ResponseInputStream.java:81)
位于com.sun.mail.iap.ResponseInputStream.readResponse(ResponseInputStream.java:67)
位于com.sun.mail.iap.Response(Response.java:83)
在com.sun.mail.imap.protocol.imapreponse上。(imapreponse.java:48)
在com.sun.mail.imap.protocol.IMAPResponse.readResponse(IMAPResponse.java:122)上
位于com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:230)
在com.sun.mail.iap.Protocol.(Protocol.java:91)
在com.sun.mail.imap.protocol.IMAPProtocol.(IMAPProtocol.java:87)
在com.sun.mail.imap.IMAPStore.protocolConnect上(IMAPStore.java:446)
... 3个以上
在这篇文章的结尾,他们建议:
看起来您必须将imap服务器的证书添加到受信任的证书存储中
有人能帮我吗?正如错误消息所示,您可能没有连接到SSL加密端口,而是连接到纯文本端口。请使用您的实际配置(主机、端口、协议)更新您的问题
如果您丢失了证书,则会收到完全不同的错误消息。配置如下:Properties props=new Properties();props.put(“mail.imaps.host”,“1.2.3.4”);props.put(“mail.imaps.auth”、“true”);props.put(“mail.debug”,“true”);props.put(“mail.imaps.port”,993);props.put(“mail.imaps.socketFactory.port”,993);put(“mail.imaps.socketFactory.class”、“javax.net.ssl.SSLSocketFactory”);props.put(“mail.imaps.socketFactory.fallback”、“false”)@GregS有两种方法:连接明文IMAP(端口143)并发出STARTTLS,或者通过SSL连接到端口993(即SSL加密的IMAP端口)。它们是相互排斥的。@MarkRotteveel:这是有道理的,谢谢Mark。我将删除我的评论。我有同样的问题。你能告诉我这里的解决方案吗?