目前我正在尝试仅检索邮件的html部分。我想要的东西可以轻松地让我只抓取消息的文本或HTML正文,更改它(例如添加标记并保持html格式和样式)并将消息转发到其他地方,同时消息的任何其他属性没有动过。我编写了一个发送者类,它使用text和html Part组成MimeMessage,但我不确定如何仅获取原始消息的html部分。当我得到它时,我可能需要一个解析器来修改它。但我不能只提取HTML代码。下面是我到目前为止管理的代码。但是当我使用MimeBodyPart.writeTo()方法时,我也将内容类型输入到文件中。我不知道如何获得干净的HTML部分。只有标签。我的第二个问题是我应该始终创建一个文件并对其进行修改然后将其传递给sender类,或者有一种方法可以直接传递MimePart。我是JavaMail的新手,所以任何帮助都将受到赞赏!谢谢!
for (int i = 0; i < mp.getCount(); i++) {
Part bp = mp.getBodyPart(i);
System.out.println("number bp : " + mp.getCount());
System.out.println("Type multip : " + mp.getContentType());
System.out.println("Type bodyPart : " + bp.getContentType());
String disposition = bp.getDisposition();
String contentType = bp.getContentType();
if (mp.getBodyPart(i).isMimeType("text/plain")
&& !Part.ATTACHMENT.equalsIgnoreCase(disposition)) {
File f = new File("text" + mp.getBodyPart(i).getFileName() );
OutputStream out = new FileOutputStream(f);
((MimeBodyPart) mp.getBodyPart(i)).writeTo(out);
} else if ( bp.isMimeType("multipart/related")) {
File f = new File("html" + mp.getBodyPart(i).getFileName() );
OutputStream out = new FileOutputStream(f);
((MimeBodyPart) mp.getBodyPart(i)).writeTo(out);
}
但writeTo的结果是文本文件
Content-Type: multipart/related;
boundary="------------020706000605000509030107"
--------------020706000605000509030107
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit
写在文件的开头。 并在此信息之后写入html部分。如何在开头没有内容类型信息的情况下只编写html?