2013-09-24 53 views
3

当我从java.mail中读取电子邮件正文contentText我得到第一个纯文本,并在此HTML文本之后。即如果发送的消息是如何从java.mail获取HTML文本/纯文本

<DIV> <b>莫克</B > < BR/>素2 < /格>

contentText将包含:

模拟模拟 <div> <b>模拟</B > < BR/>模拟2 </DIV >

下面是我的代码加载contentText:

public void setContentText(Multipart multipart) throws MessagingException, IOException { 
    contentText =""; 

    for (int i = 0; i < multipart.getCount(); i++) { 
     BodyPart bodyPart = multipart.getBodyPart(i); 
     getBodyToStringPart(bodyPart); 
    } 
} 

protected void getBodyToStringPart(BodyPart bodyPart) throws MessagingException, IOException { 
    String disposition = bodyPart.getDisposition(); 

    if (!StringUtils.equalsIgnoreCase(disposition, "ATTACHMENT")) { 
     if (bodyPart.getContent() instanceof BASE64DecoderStream 
       && bodyPart.getHeader("Content-ID") != null) { 
      BASE64DecoderStream base64DecoderStream = (BASE64DecoderStream) bodyPart 
        .getContent(); 
      byte[] byteArray = IOUtils.toByteArray(base64DecoderStream); 
      byte[] encodeBase64 = Base64.encodeBase64(byteArray); 

      this.contentText = this.contentText.replaceAll(
        "cid:" 
          + bodyPart.getHeader("Content-ID")[0].replaceAll(">", "") 
            .replaceAll("<", ""), "data:" + bodyPart.getContentType() 
          + ";base64," + new String(encodeBase64, "UTF-8")); 

     } else if (bodyPart.getContent() instanceof MimeMultipart) { 
      MimeMultipart mimeMultipart = (MimeMultipart) bodyPart.getContent(); 
      for (int j = 0; j < mimeMultipart.getCount(); j++) { 
       getBodyToStringPart(mimeMultipart.getBodyPart(j)); 
      } 
     } else { 
      this.contentText += bodyPart.getContent() + ""; 
     } 
    } else { 
     // TODO: Do we need attachments ? 
    } 

} 

回答