2013-06-27 3 views
1

다중 부분 전자 메일 내용을 구문 분석 할 수 없습니다. 누군가 제발 도와 줄 수 있니?javamail을 사용하여 Android app에서 multipart/alternative를 처리하는 방법은 무엇입니까?

나는 javamail을 사용하여 gmail에서 이메일을 수신하고 구문 분석하기 위해 stackoverflow의 게시물에서 팁을 사용하고 있습니다. Adding activation.jar & mail.jar to Android App

메시지에 getContent API는이 JavaMail에 데이터 소스에 의해 처리되지 의미합니다 [email protected]

를 반환합니다.

내용은 보이는 같은 :

콘텐츠 유형 : 다중/대안; 경계 = mimepart_51c2a32167465_82e9b701343f

--mimepart_51c2a32167465_82e9b701343f 콘텐츠 유형 : 텍스트/일반; 문자셋 = UTF-8 콘텐츠 전송 인코딩 : 따옴표 붙은 인쇄 내용 - 처리 : 인라인

... 텍스트 ...

--mimepart_51c2a32167465_82e9b701343f 의 Content-Type : text/html과; 캐릭터 = UTF-8 콘텐츠 전송 인코딩 : 인용 된 인쇄 내용 - 처리 인라인

http://www.w3.org/1999/xhtml '>

--mimepart_51c2a32167465_82e9b701343f--

답변

0

JavaMail API FAQ에 주어진 아래 코드는 도움이 될 수 있습니다 :

private boolean textIsHtml = false; 

    /** 
    * Return the primary text content of the message. 
    */ 
    private String getText(Part p) throws 
       MessagingException, IOException { 
     if (p.isMimeType("text/*")) { 
      String s = (String)p.getContent(); 
      textIsHtml = p.isMimeType("text/html"); 
      return 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 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)); 
       if (s != null) 
        return s; 
      } 
     } 

     return null; 
    } 

(PS를 당신이 대답 해주기 유용 모르겠지만 사례 애니 온의 경우 나중에 참조 할 수 있도록 게시 e는 같은 문제에 직면하고있다).

관련 문제