我编写了一个应用程序,在其中获取消息并检查其内容:
public void getInhoud(Message msg) throws IOException, Exception {
Object contt = msg.getContent();
...
if (contt instanceof String) {
handlePart((Part) msg);
}
...
}
public void handlePart(Part part)
throws MessagingException, IOException, Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
String contentType = part.getContentType();
...
if ((contentType.length() >= 9)
&& (contentType.toLowerCase().substring(
0, 9).equals("text/html"))) {
part.writeTo(out);
String stringS = out.toString();
}
...
}
我删除了不必要的代码。此方法适用于从 Gmail、Hotmail 和 Outlook 桌面客户端发送的电子邮件,但不知何故无法处理从 Office 365 Web 客户端发送的电子邮件。对于所有其他客户端,内容类型将为“纯/文本”,但仅适用于 Office 365 邮件,它将是text/html
. 它将 的数据写入Part
aByteArrayOutputStream
然后将转换为 a String
。这很有效,至少String
将包含该部分的内容。但是它包含的 HTML 有点错误。
这是一个示例: http://pastebin.com/5mEYCHxD(发布到 Pastebin,它非常大)。
请注意=
几乎每行末尾都打印的符号。这是我可以在代码中修复的东西,还是应该在邮件客户端的某个地方?
我想过循环遍历 HTML 的每一行,并=
在检查它不是 HTML 标记的一部分后删除它。
非常感谢任何帮助,这已经困扰了我几个星期了。
谢谢!