2017-04-21 41 views
0

我正嘗試使用Gmail Java API獲取電子郵件正文。我得到的所有字段包括to, from, subject無法使用Gmail Java API獲取包含文本或html內容的電子郵件正文?

但我不能夠得到文本身體,也HTML此郵件的身體是我的代碼片段:

List<MessagePart> parts = message.getPayload().getParts(); 
      StringBuilder textSb = new StringBuilder(); 
      StringBuilder htmlSb = new StringBuilder(); 
      for (MessagePart part : parts) { 
       if (part.getMimeType().equalsIgnoreCase("text/plain")) { 
        try { 
         textSb.append(new String(Base64.getDecoder().decode(part.getBody().getData()), "UTF-8")); 
        } catch (UnsupportedEncodingException e) { 
         e.printStackTrace(); 
        } 
       } 

       if (part.getMimeType().equalsIgnoreCase("text/html")) { 
        try { 
         htmlSb.append(new String(Base64.getDecoder().decode(part.getBody().getData()), "UTF-8")); 
        } catch (UnsupportedEncodingException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 

一個簡短的電子郵件正文 - 摘錄可以通過以下方法來獲得(但不是全身體):

message.getSnippet(); 

但是,這不足以在我的情況下,我需要全身內容。

在調試器的上述循環中迭代MessageParts時,我首先獲得了MIME類型multipart/alternative和其他MIME類型application/pdf這兩個部分,用於pdf文件附件。

我該如何獲得電子郵件的正文?

回答

0

經過搜索後,我發現細節在MessagePartsMessage列表的第一部分對象。在第一部分中,您將獲得包含電子郵件正文(即文本內容,html內容)的列表MessageParts

List<MessagePart> parts = message.getPayload().getParts().get(0).getParts(); 
    StringBuilder mixContent = new StringBuilder(); 

    for (MessagePart part : parts) { 
        if (part.getMimeType().equalsIgnoreCase("text/plain")) { 
         try { 
          mixContent.append(new String(Base64.getUrlDecoder().decode(part.getBody().getData()), "UTF-8")); 
          continue; 
         } catch (UnsupportedEncodingException e) { 
          e.printStackTrace(); 
         } 
        } 
        if (part.getMimeType().equalsIgnoreCase("text/html")) { 
         try { 
          mixContent.append(new String(Base64.getUrlDecoder().decode(part.getBody().getData()), "UTF-8")); 
         } catch (UnsupportedEncodingException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
相關問題