java - 使用 Java IMAP 时两次获取 Gmail 邮件的 html 内容

标签 java gmail 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;
    }

这将返回一个包含原始文本的格式良好的字符串,但由于某种原因,在字符串末尾的一行中也会包含完整的消息。

说出收到的消息:
电子邮件
留言
测试

输出将是:
电子邮件
留言
文字

电子邮件消息文本

我猜测多部分的一部分是消息内容的压缩版本,但如何避免在输出中出现此内容?

P.S,如果相关的话,我通过 IMAP 连接到 gmail 来获取消息,然后从文件夹中提取所有电子邮件,然后逐一处理它们。

folder.open(IMAPFolder.READ_ONLY);
messages = folder.getMessages();

最佳答案

大多数电子邮件都有 html 正文部分和纯文本正文部分(两者)。
您可以使用 getContentType 获取正文部分的内容类型

关于java - 使用 Java IMAP 时两次获取 Gmail 邮件的 html 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564334/

相关文章:

java - 避免在调用监听器之前执行代码?

PHP imap_fetchbody 无法获取 HTML a 标签链接 url

Python:如何通过 IMAP 将带有 BCC 收件人的电子邮件草稿存储到 Exchange Server?

java - 为什么我在 Android SDK 中计算的百分比变成负值?

JavaFX - 如何创建(不可见的)WebView 的快照/屏幕截图

java - 使用 Spring 从 Mongo 检索任何对象的最佳方法是什么?

c# - 使用 LumiSoft - C# 从 Gmail 收件箱获取邮件

C# - 通过 Gmail 或其他方式发送电子邮件?

php - 想要将 Facebook/Gmail 聊天安装到我的 Web 应用程序

ssl - 从 outlook imap 服务器获取 offlineimap 的正确证书信息