使用 Java IMAP 时两次获取 Gmail 邮件的 html 内容
Getting the html content of a Gmail message twice when using Java IMAP
如标题所示,我正在尝试从 gmail 帐户导入电子邮件并且它运行良好,但我的代码似乎有问题,消息的内容在我的输出中出现了两次。
这是我的代码:
private String processMessage(Message m) throws IOException, MessagingException {
String message = "";
StringBuilder sb = new StringBuilder();
Object o = m.getContent();
if (o instanceof Multipart) {
Multipart mm = (Multipart) m.getContent();
for (int i = 0; i < mm.getCount(); i++) {
BodyPart bp = mm.getBodyPart(i);
Object bpo = bp.getContent();
if (bpo instanceof String) {
sb.append(bpo);
}
}
} else if (o instanceof String) {
sb.append(o);
}
String htmlMessage = sb.toString();
message = htmlMessage.replaceAll("\<.*?\>", "");
return message;
}
这将 return 一个包含原始文本的漂亮格式化字符串,但由于某种原因,字符串末尾的一行中还会包含完整的消息。
收到消息说:
电子邮件
留言
测试
输出将是:
电子邮件
留言
文字
电子邮件消息文本
我猜 multipart 的一部分是消息内容的压缩版本,但我怎样才能避免在输出中出现这种情况?
P.S,如果相关,我会通过 IMAP 连接到 gmail 来接收消息,然后从文件夹中提取所有电子邮件,然后再逐一处理。
folder.open(IMAPFolder.READ_ONLY);
messages = folder.getMessages();
大多数电子邮件都有 html 正文部分和纯文本正文部分(两者都有)。
您可以使用 getContentType
获取正文部分的内容类型
如标题所示,我正在尝试从 gmail 帐户导入电子邮件并且它运行良好,但我的代码似乎有问题,消息的内容在我的输出中出现了两次。
这是我的代码:
private String processMessage(Message m) throws IOException, MessagingException {
String message = "";
StringBuilder sb = new StringBuilder();
Object o = m.getContent();
if (o instanceof Multipart) {
Multipart mm = (Multipart) m.getContent();
for (int i = 0; i < mm.getCount(); i++) {
BodyPart bp = mm.getBodyPart(i);
Object bpo = bp.getContent();
if (bpo instanceof String) {
sb.append(bpo);
}
}
} else if (o instanceof String) {
sb.append(o);
}
String htmlMessage = sb.toString();
message = htmlMessage.replaceAll("\<.*?\>", "");
return message;
}
这将 return 一个包含原始文本的漂亮格式化字符串,但由于某种原因,字符串末尾的一行中还会包含完整的消息。
收到消息说:
电子邮件
留言
测试
输出将是:
电子邮件
留言
文字
电子邮件消息文本
我猜 multipart 的一部分是消息内容的压缩版本,但我怎样才能避免在输出中出现这种情况?
P.S,如果相关,我会通过 IMAP 连接到 gmail 来接收消息,然后从文件夹中提取所有电子邮件,然后再逐一处理。
folder.open(IMAPFolder.READ_ONLY);
messages = folder.getMessages();
大多数电子邮件都有 html 正文部分和纯文本正文部分(两者都有)。
您可以使用 getContentType
获取正文部分的内容类型