0

私は奇妙な問題に直面しています。IMAP経由でGmailサーバーに接続しています。最初の試行で問題なく接続しています。しかし、2回目にストアに接続すると、例外が発生します。助けてください。以下は私が使用したコードです。

String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
        try {

            Properties properties = new Properties();
            properties.setProperty("mail.store.protocol", "imaps");
    //      properties.setProperty("mail.imaps.socketFactory.fallback", "false");


            // set this session up to use SSL for IMAP connections
            properties.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            properties.setProperty("mail.imaps.socketFactory.fallback", "false");

            // use the simap port for imap/ssl connections.
        //  properties.setProperty("mail.imap.socketFactory.port", "993");

            URLName url = new URLName("imap", _INCOMINGMAILSERVER, 993, "", _USERNAME, _PASSWORD);

            Session session = Session.getInstance(properties,null);
            session.setDebug(true);

            //Store store = session.getStore("imaps");
            Store store = new IMAPSSLStore(session, url);


            if (store.isConnected()) {
                Log.v("Connected", "TRUE");
            } else {
                Log.v("Connected", "FALSE");
                /*
                 * store.connect(_OUTGOINGMAILSERVER, _USERNAME, _PASSWORD); if
                 * (store.isConnected()) store.close();
                 */


                Log.v("INCOMING SERVER", _INCOMINGMAILSERVER);
                //store.connect(_INCOMINGMAILSERVER, _USERNAME, _PASSWORD);
                store.connect();
            }
            connected = true;

例外

================= 05-15 01:31:50.765: W/System.err(19008): javax.mail.MessagingException: SSL ハンドシェイクが中止されました: ssl=0x2a8e5238:システム コール中の I/O エラー、ピアによって接続がリセットされました。05-15 01:31:50.765: W/System.err(19008): ネストされた例外: 05-15 01:31:50.765: W/System.err(19008): javax.net.ssl.SSLException: SSL ハンドシェイク中止: ssl=0x2a8e5238: システム コール中の I/O エラー、ピア 05-15 01:31:50.765 による接続のリセット: W/System.err(19008): com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore で.java:571) 05-15 01:31:50.765: W/System.err(19008): javax.mail.Service.connect(Service.java:288) 05-15 01:31:50.765: W/システム.err(19008): javax.mail.Service.connect(Service.java:169) 05-15 01:31:50.765: W/System.err(19008): javax.mail.Service.connect(Service. java:118) 05-15 01:31:50.765: W/システム。

OK今、私はこれを使用しています:-

Properties properties = new Properties();
properties.setProperty("mail.store.protocol", "imaps");
Session session = Session.getInstance(properties,null);
session.setDebug(true);
Store store = session.getStore("imaps"); 
store.connect(_INCOMINGMAILSERVER, _USERNAME, _PASSWORD);

また、メッセージ等を頂き次第閉店させて頂きます。

しかし、2回目の接続でも同じエラーが発生します。サーバーが応答していないか、2 回目の接続中にポートがビジー状態になっているようです。私はそれを理解することはできません。

4

2 に答える 2

0

ソケット ファクトリをすべて削除してコードをクリーンアップし、Gmail への接続についてはこちらの手順に従ってください。IMAPSSLStore を自分でインスタンス化する代わりに、必ず Session.getStore を使用してください。

于 2013-05-15T21:42:17.843 に答える
0

私も同じ例外を受けました。TLS 1.0 プロトコルがサーバーでサポートされていないことが原因であることがわかりました。

Android端末で、TLS 1.0がサポートされていないサーバーへのhttp接続に失敗することがわかりました。バグについてあちこち検索しましたが、この問題に関連するものは見つかりませんでした。そして、TLS 1.0 プロトコルのサポートがサーバーに追加されたときに、問題は解決されました。

https://www.ssllabs.com/ssltestを使用して、サーバー/ホスト名プロトコルのサポートを確認できます。

于 2013-12-10T08:55:43.470 に答える