Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Gmail Java API获取包含文本或html内容的电子邮件正文?_Java_Email_Gmail_Gmail Api - Fatal编程技术网

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

无法使用Gmail Java API获取包含文本或html内容的电子邮件正文?,java,email,gmail,gmail-api,Java,Email,Gmail,Gmail Api,我正在尝试使用Gmail Java API获取邮件正文。我正在获取所有字段,包括到、从、主题 但我无法获得文本正文,同时电子邮件的html正文这里是我的代码片段: List<MessagePart> parts = message.getPayload().getParts(); StringBuilder textSb = new StringBuilder(); StringBuilder htmlSb = new String

我正在尝试使用Gmail Java API获取邮件正文。我正在获取所有字段,包括
到、从、主题

但我无法获得文本正文,同时电子邮件的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();
                    }
                }
            }
但这对我来说还不够,我需要全身的东西

在调试器的上述循环中迭代
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();
                        }
                    }
                }
List parts=message.getPayload().getParts().get(0.getParts();
StringBuilder mixContent=新的StringBuilder();
for(MessagePart:parts){
if(part.getMimeType().equalsIgnoreCase(“text/plain”)){
试一试{
append(新字符串(Base64.getUrlDecoder().decode(part.getBody().getData()),“UTF-8”);
继续;
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
}
if(part.getMimeType().equalsIgnoreCase(“text/html”)){
试一试{
append(新字符串(Base64.getUrlDecoder().decode(part.getBody().getData()),“UTF-8”);
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
}
}
    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();
                        }
                    }
                }