2012-04-27 18 views
0

我在Android上有一個電子郵件項目,我可以接收和下載我的郵件及其附件,但是現在我想了解一條消息是否有附件?它有多少附件? 我的意思是我只需要做一個if子句;part.isMimeType ==「Multipart/*」是否意味着它有附件?

if(messages[i].hasAttachment) 
{ 
    int numberOfAttachments = messages[i].attachmentNumber; 
    // do smthng 
} 
else 
{ 
    // do smthng 
} 

也許它的幫助:我收到我的身體部分與此代碼示例。同時,就像我在問題的提問。如果isMimeType =「Multipart/alternative」或「Multipart/*」,是否表示它有附件?

public String getText(Part p) throws MessagingException, IOException { 

     if (p.isMimeType("text/*")) { 
      boolean textIsHtml = false; 
      String s = (String) p.getContent(); 
      textIsHtml = p.isMimeType("text/html"); 
      return String.valueOf(s); 
     } 

     if (p.isMimeType("multipart/alternative")) { 
      // prefer html text over plain text 
      Multipart mp = (Multipart) p.getContent(); 
      String text = null; 
      for (int i = 0; i < mp.getCount(); i++) { 
       Part bp = mp.getBodyPart(i); 
       if (bp.isMimeType("text/plain")) { 
        if (text == null) 
         text = getText(bp); 
        continue; 
       } else if (bp.isMimeType("text/html")) { 
        String s = getText(bp); 
        if (s != null) 
         return String.valueOf(s); 
       } else { 
        return getText(bp); 
       } 
      } 
      return text; 
     } else if (p.isMimeType("multipart/*")) { 
      Multipart mp = (Multipart) p.getContent(); 
      for (int i = 0; i < mp.getCount(); i++) { 
       String s = getText(mp.getBodyPart(i)); 
       // fileName = bp.getFileName(); 
       if (s != null) 
        return String.valueOf(s); 
      } 
     } 

     return null; 
    } 

回答

1

這裏是我用來解析附件的代碼。我用多/附件或者多/ *,並改變了這個解析:

  if(mimeMessage.getContent() instanceof Multipart) { 
      Multipart multipartContent = (Multipart) mimeMessage.getContent(); 
      List<BodyPart> deleteThese = new ArrayList<BodyPart>(); 
      for(int i = 0; i < multipartContent.getCount(); i++) { 
       MimeBodyPart part = (MimeBodyPart) multipartContent.getBodyPart(i); 
       String disposition = part.getDisposition(); 
       if(disposition != null 
         && (disposition.equalsIgnoreCase(Part.ATTACHMENT) 
         || (disposition.equalsIgnoreCase(Part.INLINE) 
          && !part.isMimeType(PLAIN_TEXT_MIME_TYPE) 
          && !part.isMimeType(HTML_MIME_TYPE)) 
       )) { 
        // do something with part 
       } 
      } 

從本質上講,如果電子郵件有一個多部分有一個附件的潛力,但你必須看內容處置真的知道。 Part.ATTACHMENT將是您感興趣的內容,您也可以選擇忽略或分析Part.INLINE。

+0

感謝您的回覆,我搜索了內容配置但只有設置的東西,我必須收到,獲取內容配置。你能給我提供教程或樣品的歌詞嗎? – Merve 2012-04-27 13:34:47

相關問題