在我的项目中,我需要使用javamail从MS Exchange电子邮箱中读取邮件并将其内容保存在硬盘中。但我发现,即使我收到的最简单的电子邮件也会保存html
内容,例如head
body
等等,即使我只写了两个带格式的文字,没有图片,没有附件。但我只想要电子邮件的文本。
部分代码:
Object content = part.getContent();
if (content instanceof InputStream || content instanceof String) {
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition()) ||
StringUtils.isNotBlank(part.getFileName())) {
String messageBody = part.getContent().toString();
....(write this string to files)
}
}
我可以写:
Hello world.
我得到一个带有所有HTML代码的txt,以及fontface
和<html>
之类的标签,等等。
我看到this question,我发现他只检索文字内容,但我不能在那里发表评论,所以我必须发一个新问题,我发现我的代码和他的代码没有区别。他写道:
if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT))) {
DataHandler handler = bodyPart.getDataHandler();
s1 = (String) bodyPart.getContent();`
关于DataHandler
呢?但它没有在任何地方使用?
有人可以帮忙吗?
答案 0 :(得分:0)
首先,您要阅读此JavaMail FAQ条目,告诉您如何find the main message body。如上所述,在消息包含两者的情况下,它优先于纯文本正文的html正文。应该清楚如何扭转这种偏好。
但是,并非所有邮件都包含邮件正文的html和纯文本版本。如果你只得到html,你将不得不编写自己的代码来处理字符串并删除html标签,或者使用其他产品来处理html并删除标签。