java - 无法使用 Gmail Java API 获取包含文本或 html 内容的电子邮件正文?

标签 java email gmail gmail-api

我正在尝试使用 Gmail Java API 获取电子邮件正文。我正在获取所有字段,包括to、from、subject

但是我无法获取文本正文,这里的电子邮件的 html 正文也是我的代码片段:

 List<MessagePart> parts =  message.getPayload().getParts();
            StringBuilder textSb = new StringBuilder();
            StringBuilder htmlSb = new StringBuilder();
            for (MessagePart part : parts) {
                if (part.getMimeType().equalsIgnoreCase("text/plain")) {
                    try {
                        textSb.append(new String(Base64.getDecoder().decode(part.getBody().getData()), "UTF-8"));
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                }

                if (part.getMimeType().equalsIgnoreCase("text/html")) {
                    try {
                        htmlSb.append(new String(Base64.getDecoder().decode(part.getBody().getData()), "UTF-8"));
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                }
            }

可以使用以下方法获得简短的电子邮件正文文本片段(但不是完整正文):

message.getSnippet();

但这对我来说还不够,我需要全身内容。

在调试器的上述循环中迭代 MessageParts 时,我首先得到 MIME 类型 multipart/alternative 的两个部分和 MIME 类型 application/pdf< 的其他部分 用于 pdf 文件附件。

我应该怎么做才能获取电子邮件正文?

最佳答案

经过更多搜索,我发现详细信息位于 Message 对象的 MessageParts 列表的第一部分。在第一部分中,您将获得 MessageParts 列表,其中包含电子邮件正文,即文本内容、html 内容:

    List<MessagePart> parts = message.getPayload().getParts().get(0).getParts();
    StringBuilder mixContent = new StringBuilder();

    for (MessagePart part : parts) {
                    if (part.getMimeType().equalsIgnoreCase("text/plain")) {
                        try {
                            mixContent.append(new String(Base64.getUrlDecoder().decode(part.getBody().getData()), "UTF-8"));
                            continue;
                        } catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                        }
                    }
                    if (part.getMimeType().equalsIgnoreCase("text/html")) {
                        try {
                             mixContent.append(new String(Base64.getUrlDecoder().decode(part.getBody().getData()), "UTF-8"));
                        } catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                        }
                    }
                }

关于java - 无法使用 Gmail Java API 获取包含文本或 html 内容的电子邮件正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43535344/

相关文章:

java - 构建错误 : package android. 应用程序不存在 - 构建认为 Android SDK 未安装? (安卓工作室1.0)

java - 如何播放多个Clip实例?

google-apps-script - 为什么 GmailDraft.send() 会使草稿的 gmail 标签消失?

delphi - 使用应用程序特定密码通过 GMail 发送电子邮件

Python:脚本发送的邮件被 Gmail 标记为垃圾邮件

java - UnsatisfiedLinkError : no sqljdbc_auth in java. 库.path

java - 如何使这个 2038 年问题 junit 测试按预期工作

在 PHP 5.6 上使用 SMTP 的 PHP 邮件程序错误

email - tail 和 grep 日志和邮件 (linux)

delphi - 通过XE2 delphi发送电子邮件时出错