2012-04-27 3 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

関連する問題