【问题标题】:Unable to get email body containing text or html content using Gmail Java API?无法使用 Gmail Java API 获取包含文本或 html 内容的电子邮件正文?
【发布时间】:2017-09-18 00:31:02
【问题描述】:

我正在尝试使用 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();
                    }
                }
            }

可以使用以下方法获得简短的电子邮件正文 text-sn-p (但不是完整的正文):

message.getSnippet();

但就我而言,这还不够,我需要全身内容。

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

我应该怎么做才能得到电子邮件的正文?

【问题讨论】:

    标签: java email gmail gmail-api


    【解决方案1】:

    经过更多搜索,我发现详细信息在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();
                            }
                        }
                    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 2015-12-15
      • 2018-02-17
      • 2020-02-05
      • 2018-07-28
      • 2023-03-09
      • 2017-06-24
      • 2022-01-25
      相关资源
      最近更新 更多