![](/img/trans.png)
[英]Get the full email body content using gmail api and android client
[英]Unable to get email body containing text or html content using Gmail Java 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
List的第一部分中。 在第一部分中,您将获得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();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.