2013-05-11 65 views
0

我正在为我的Android手机开发一个电子邮件客户端,并且想要获取多部分格式的邮件内容。Javmail获取多部分邮件内容

的text/plain的内容,我得到以下方式:

public String getContent(Part p) { 

    Object contentObject = null; 

    try { 

     if (p.isMimeType("text/plain")) { 
      if (!showStructure && !saveAttachments) 
       contentObject = p.getContent(); 
     } 

     InputStream is = (InputStream) contentObject; 
     reader = new BufferedReader(new InputStreamReader(is)); 
     StringBuilder sb = new StringBuilder(); 
     String line; 

     while ((line = reader.readLine()) != null) { 
      sb.append(line); 
      sb.append(System.getProperty("line.separator")); 
     } 

     String everything = sb.toString(); 

     System.out.println(everything); 
     return everything; 

    } catch (Exception e) { 
     return "Fehler: " + e; 
    } 
} 

我怎样才能得到一个多部分消息的内容的文字?我已经尝试过这样的:

[...] 
} else if (p.isMimeType("multipart/*")) { 
      Multipart mp = (Multipart) p.getContent(); 
      level++; 
      int count = mp.getCount(); 
      for (int i = 0; i < count; i++) 
       contentObject = getContent(mp.getBodyPart(i)); 
      level--; 
} 

(...),那么InputStream的读者,但我得到的异常IMAPInputStream不能转换到javax.mail.Multipart。

+1

见http://www.oracle.com/technetwork/java/javamail/faq/index.html#castmultipart – 2013-05-11 10:13:11

+0

我把“Thread.currentThread()。setContextClassLoader(this.getClass( ).getClassLoader());“,但它不工作:(其他想法? – jwandscheer 2013-05-13 15:28:44

+0

有没有人有一个想法如何我可以从多部分消息中获取文本? – jwandscheer 2013-05-18 16:36:34

回答

-1

你应该请求开始,像

ServletRequest request 

之后,你拿的请求,并询问是否是多部分请求。我希望这有助于

HttpServletRequest httpServletRequest = null;  
    if (request instanceof HttpServletRequest) { 
     httpServletRequest = (HttpServletRequest) request; 
    } 

    CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(); 
    if (commonsMultipartResolver.isMultipart(httpServletRequest)) { 
     if (commonsMultipartResolver.isMultipart(null)) { 
      try { 
       MultipartHttpServletRequest multipartHttpServletRequest = commonsMultipartResolver.resolveMultipart(httpServletRequest); 
       Enumeration<String> enumKey = multipartHttpServletRequest.getParameterNames(); 
       while(enumKey.hasMoreElements()) { 
        String key = enumKey.nextElement(); 
        System.out.println("multipart " + key + ": " + multipartHttpServletRequest.getParameter(key));     
       }    
      } catch (Exception ex) { 
       System.out.println("Exception TEST: " + ex); 
      } 
     } 
    }