0

次のコードを使用して、ポート 443 で IMAPS を使用して Exchange サーバーに接続しようとしています (相手側ではこのように構成されています)。. .

            props.setProperty("javax.net.ssl.trustStore", "C:/Program Files/Java/jdk1.6.0_30/jre/lib/security/cacerts");
            props.setProperty("javax.net.ssl.trustStorePassword", "changeit");
            props.setProperty("javax.net.ssl.trustStoreType", "jks");
            props.setProperty("javax.net.debug", "ssl");

            System.setProperties(props);

            props = System.getProperties();

            final Session session = Session.getInstance(props, null);
            session.setDebug(debug);
            com.sun.mail.imap.IMAPFolder inbox = null;
            Store store = null;

            store = session.getStore("imaps");
            store.connect(host, 443, username, password);
            inbox = (com.sun.mail.imap.IMAPFolder) store.getFolder("INBOX");

. . .

証明書エラーが発生しないという事実から判断すると、それらはストアの場所から正しく読み込まれています。ただし、コードが connect ステートメントに到達すると、次のトレースが表示されます:"

[29/01/13 18:23:02:811 CST] 0000007d SystemOut     O DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc]
[29/01/13 18:23:02:812 CST] 0000007d SystemOut     O DEBUG: mail.imap.fetchsize: 16384

[29/01/13 18:18:42:814 CST] 0000007d SystemErr     R javax.mail.MessagingException;
nested exception is:
java.io.IOException
[29/01/13 18:18:42:814 CST] 0000007d SystemErr     R    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:479)
[29/01/13 18:18:42:814 CST] 0000007d SystemErr     R    at javax.mail.Service.connect(Service.java:275)
[29/01/13 18:18:42:814 CST] 0000007d SystemErr     R    at com.scots.utils.MailPoller$1.run(MailPoller.java:74)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at java.lang.Thread.run(Thread.java:738)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R Caused by: java.io.IOException
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.iap.ResponseInputStream.read0(ResponseInputStream.java:99)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.iap.ResponseInputStream.readResponse(ResponseInputStream.java:67)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.iap.Response.<init>(Response.java:83)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.imap.protocol.IMAPResponse.<init>(IMAPResponse.java:48)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.imap.protocol.IMAPResponse.readResponse(IMAPResponse.java:122)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:230)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.iap.Protocol.<init>(Protocol.java:91)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:87)
[29/01/13 18:18:42:815 CST] 0000007d SystemErr     R    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:446)
[29/01/13 18:18:42:816 CST] 0000007d SystemErr     R    ... 3 more

何もありません!接続の実行中にスローされた IOException の考えられる意味または原因をあらゆる場所で検索しましたが、これまでのところ何もありません。

スタックトレースがそれ以上進まず、その中で参照されている自分のコードの唯一の行が接続ステートメント自体 (com.scots.utils.MailPoller$1.run(MailPoller.java:74)) であることを考えると、私は本当にそうしません先に進むことがたくさんあります。

問題を引き起こしている可能性がある唯一のことは、メール ポーリングの仕組みを別のスレッド (run メソッド) 内に配置したことです。それは問題を引き起こす可能性がありますか?

あなたが提供できるアイデアは大歓迎です!

前もって感謝します。

4

1 に答える 1

0

例外にはあまり情報がありませんが、根本的な原因は、SSL 接続を適切に処理していない可能性が最も高いと思います。JavaMail SSLNOTES.txtファイルには、デバッグのヒントとポインタが含まれています。

于 2013-01-30T04:28:34.827 に答える