2011-12-24 67 views
1

我使用的是內置到Java的Java郵件API從自己的Gmail框獲取用戶的郵件,大部分的代碼我在another SO question找到。我能夠正確地獲取大部分信息,例如郵箱中的主題,發件人和其他信息。除了當我去拉消息的「內容」它不總是拉消息的內容問題檢索來自Gmail的郵件在Android應用

一切都很正常。只有十分之一的效果。其他9倍,它只是發現「[email protected]

我的代碼如下。我將輸出打印到LogCat進行測試。提前致謝。

Properties props = System.getProperties(); 
      Session session = Session.getDefaultInstance(props, null); 
      Store store = session.getStore("imaps"); 
      store.connect("imap.gmail.com", "Email address here", 
        "password here"); 
      Folder inbox = store.getFolder("Inbox"); 
      inbox.open(Folder.READ_ONLY); 
      Message messages[] = inbox.getMessages(); 
      for (Message message : messages) 
       Log.d("Email", message + ""); 
      Message message[] = inbox.getMessages(); 

        for (int i = 0; i < 25; i++) { 
         Log.d("From", message[i].getFrom()[0] + ""); 
         Log.d("Subject", message[i].getSubject() + ""); 
         String content = message[i].getContent().toString(); 
         Log.d("content", content + ""); 

        } 

編輯: 經過一些額外的研究,我發現它是與閱讀多郵件用JavaMail

回答

3
取代

如果其他人有這個問題,它不能一直工作的原因是,當它發現多部分消息時,它無法讀取它們。以下是閱讀多部分電子郵件的解決方案。我發現大部分代碼爲on this website

String s = message[i].getContent() + ""; 

        if(s.indexOf("MimeMultipart") != -1){ 
         Multipart multipart = (Multipart) message[i].getContent(); 

          for (int x = 0; x < multipart.getCount(); x++) { 
          BodyPart bodyPart = multipart.getBodyPart(x); 

          String disposition = bodyPart.getDisposition(); 
          //Log.d("disposition", disposition + ""); 

          if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT))) { 
           System.out.println("Mail have some attachment : "); 

           DataHandler handler = bodyPart.getDataHandler(); 
           System.out.println("file name : " + handler.getName()); 
           } else { 
           System.out.println(bodyPart.getContent()); 
           } 
           } 
           System.out.println(); 



          } 

        else 
         Log.d("Content", message[i].getContent() + ""); 

       } 
+0

請記得選擇一個可接受的答案! – 2011-12-24 18:53:36

+0

我沒有複製你的答案,但你的邏輯幫助了我很多。 – 2012-04-06 12:30:18

3

試試這個,

imap.gmail.com通過smtp.gmail.com

+0

謝謝,但它仍然是相同的:/ – Peter 2011-12-24 05:24:55

+0

我認爲你也需要添加端口。 – Lucifer 2011-12-24 05:27:05

+0

對不起,但我該怎麼做? – Peter 2011-12-24 05:27:35

相關問題