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