2012-05-22 83 views
2

我試圖使用JavaMail API訪問郵件消息。使用JavaMail訪問Mailinator POP3

我可以正確連接到服務器等,但是當涉及到閱讀郵件時,我一直收到「文件夾未打開」異常,並且當我檢查文件夾是否打開並且如果不打開文件夾,幫助。我猜因爲某種原因mailinator結束了連接等等。

如果我嘗試獲取消息的輸入流而不是使用getContent,我可以從輸入流中讀取罰款,並且它包含消息的樣式等,但由於某些原因,它似乎是我從inputstream讀取的數據不包含消息身體..

如果這是關於mailinator或您可以提供給我任何其他隨機電子郵件閱讀服務,支持POP3或其他易讀,這是否真的,如果我使用mailinator這個項目。

我目前的郵件閱讀代碼。

private void checkMail(String user) { 
    Properties props = new Properties(); 
    Session session = Session.getDefaultInstance(props, null); 
    try { 
     Store store = session.getStore("pop3"); 
     store.connect("pop.mailinator.com", 110, user, "12345678"); 
     Folder inbox = store.getFolder("inbox"); 
     if(inbox == null) { 
      System.out.println("no inbox"); 
     } else { 
      inbox.open(Folder.READ_ONLY); 
      for(Message message: inbox.getMessages()) { 

       byte[] buffer = new byte[10000]; 

       int read = 0; 

       try { 

        while((read = message.getInputStream().read(buffer, 0, 1024)) > 0) { 
         for(int i = 0; i < buffer.length; i++) { 
          System.out.print((char)buffer[i]); 
         } 
        } 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       /*try { 
        System.out.println(message.getContent().toString()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       }*/ 
      } 
     } 
     inbox.close(false); 
     store.close(); 
    } catch (NoSuchProviderException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (MessagingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

當從輸入流中讀取時,它看起來像輸入流永遠不會結束,只是重新開始。我的目的是獲取消息正文和主題。

回答

0

如果您正在從消息中讀取InputStream,那麼顯然該文件夾已打開。 你什麼時候得到「文件夾未打開」異常? protocol trace顯示什麼?如果您認爲服務器是問題的端口,則可以嘗試使用Gmail。另外,您還需要fix your use of getDefaultInstance

0

過去的一段時間,Mailinator改變了行爲,禁止POP3訪問(或僅爲付費客戶保留)。也許這是你的問題(如果代碼與另一個郵件提供商合作)。