2013-05-15 4 views
0

이상한 문제가 있습니다. IMAP을 통해 Gmail 서버에 연결하고 있습니다. 첫 번째 시도에 잘 연결됩니다. 그러나 상점을 두 번째로에 연결하면 예외가 발생합니다. 도와주세요. 아래는 내가 사용한 코드입니다.Android에서 Java Mail 예외가 발생했습니다.

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; 

예외

================== 1월 5일부터 15일까지 : 31 : 50.765 : System.err에/W (19,008) : javax.mail.MessagingException : SSL 핸드 셰이크가 중단되었습니다. ssl = 0x2a8e5238 : 시스템 호출 중 I/O 오류, 피어에 의한 연결 재설정, 05-15 01 : 31 : 50.765 : W/System.err (19008) : javax.net.ssl.SSLException : 0-15 01 : 31 : 50.765 : W/System.err (19008) 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 : System.err (19008) : 에서 javax.mail.Service.connect (Service.java:288) 05-15 01 : 31 : 50.765 : W/System.err (19008) : javax.mail.Service.connect (Service.java:169) 05-15 01 : 31 : 50.765 : System.err (19008) : javax.mail.Service.connect (Service.java:118) 05-15 01 : 31 : 50.765 : 승/System.err (19008) : 012에com.dts.powermailmanager.Mailmanager._connectToImap (Mailmanager.java:218) 05-15 01 : 31 : 50.765 : W/System.err (19008) : com.dts.powermailmanager.Mailmanager.connect (Mailmanager. java : 365) 05-15 01 : 31 : 50.765 : W/System.err (19008) : 에서 com.dts.classes.PowermailAsync.doInBackground (PowermailAsync.java:157) 05-15 01 : 31 : 50.769 : W/System.err (19008) : com.dts.classes.PowermailAsync.doInBackground (PowermailAsync.java:1) 05-15 01 : 31 : 50.769 : W/System.err (19008) : android .os.AsyncTask $ 2.call (AsyncTask.java:287) 05-15 01 : 31 : 50.781 : 승/System.err (19008) : java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java : 305) 05- 15 01 : 31 : 50.781 : W/System.err (19008) : 에서 java.util.concurrent.FutureTask.run (FutureTask.java:137) 05-15 01 : 31 : 50.781 : W/System.err 19008) : android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:230) 05-15 01 : 31 : 50.781 : W/System.err (19008) : 에서 java.util.concurrent.ThreadPoolExecutor .runWorker (ThreadPoolExecutor.java:1076) 05-15 01 : 31 : 50.781 : W/System.err (19008) : 에서 java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:569) 05 -15 01 : 31 : 50.781 : W/System.err (19008) : 에서 java.lang.Thread.run (Thread.java:856) 05-15 01 : 31 : 50.781 : W/System.err (19008) : 원인 : javax.net.ssl.SSLException : SSL 핸드 셰이크가 중단되었습니다. ssl = 0x2a8e5 238 : 시스템 호출 중 입출력 오류 피어에 의한 연결 재설정 05-15 01 : 31 : 50.796 : W/System.err (19008) : 에서 org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake (기본 메서드) 05-15 01 : 31 : 50.796 : W/System.err (19008) : 에서 org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake (OpenSSLSocketImpl.java:395) 05- 15 01 : 31 : 50.796 : W/System.err (19008) : 에서 org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLInputStream (OpenSSLSocketImpl.java:647) 05-15 01 : 31 : 50.796 : W/System.err (19008) : 에서 org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream (OpenSSLSocketImpl.java : 618) 05-15 01 : 31 : 50.796 : W/System.err (19008) : 에서 com.sun.mail.iap.Protocol.initStreams (Protocol.java:132) 05-15 01:31 : 50.796 : W/System.err (19008) : com.sun.mail.iap.Protocol. (Protocol.java:111) 05-15 01 : 31 : 50.796 : W/System.err (19008) : com.sun.mail.imap.protocol.IMAPProtocol. (IMAPProtocol.java:104) 05-15 01 : 31 : 50.800 : W/System.err (19008) : com.sun.mail.imap. IMAPStore.protocolConnect 05-15 01 (IMAPStore.java:538) : 31 : 50.800 : W/System.err에 (19,008) NOW I 이것을 사용하고 14 ... 더

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); 

메시지를 남긴 후 저장소를 닫습니다.

두 번째로 연결하는 동안 여전히 같은 오류가 발생합니다. 두 번째 연결하는 동안 서버가 응답하지 않거나 포트가 다소 바쁜 것 같습니다. 나는 그것을 이해할 수 없다.

답변

0

코드를 getting rid of all that socket factory stuff까지 정리하고 here for connecting to Gmail 절차를 따르십시오. IMAPSSLStore를 직접 인스턴스화하는 대신 Session.getStore를 사용해야합니다.

+0

을 사용하여 서버/호스트 이름 프로토콜 지원을 확인할 수 있습니다. Properties properties = new Properties(); properties.setProperty ("mail.store.protocol", "imaps"); – saikat

+0

ok 위 코드를 확인하십시오. 질문을 수정했습니다. 그러나 여전히 같은 오류 – saikat

+0

성공적으로 연결은되었지만 위의 예외와 정확히 같은 두 번째 시도에서 실패합니까? 나는 그것이 왜 일어날 지 상상할 수 없다. 아마도 코드에 뭔가 다른 것이있을 것입니다. JavaMail 디버그 결과는 무엇을 보여줍니까? –

0

나는 또한 같은 예외를 가지고있다. TLS 1.0 프로토콜이 서버에서 지원되지 않아서 발견되었습니다.

Android 기기에서 TLS 1.0이 지원되지 않는 서버로 http 연결이 실패 함을 발견했습니다. 모든 버그를 찾아 보았지만이 문제와 관련된 것을 찾지 못했습니다. TLS 1.0 프로토콜 지원이 서버에 추가되었을 때 문제가 해결되었습니다.

https://www.ssllabs.com/ssltest

관련 문제