[英]Gmail APIs: Decoding the body of the message (Java/Android)
我需要以用戶郵箱中的格式獲取檢索到的郵件,即:HTML。
我在解碼檢索到的郵件正文時遇到麻煩。
請提出一種使用Java完成此操作的方法。
我目前正在這樣做以獲取消息:
public class MyClass {
public static Message getMessage(Gmail service, String userId, String messageId)
throws IOException {
Message message = service.users().messages().get(userId, messageId).execute();
System.out.println("Message snippet: " + message.getSnippet());
return message;
}
public static MimeMessage getMimeMessage(Gmail service, String userId, String messageId)
throws IOException, MessagingException {
Message message = service.users().messages().get(userId, messageId).setFormat("raw").execute();
byte[] emailBytes = Base64.decodeBase64(message.getRaw());
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeMessage email = new MimeMessage(session, new ByteArrayInputStream(emailBytes));
return email;
}
}
String mimeType = message.getPayload().getMimeType();
List<MessagePart> parts = message.getPayload().getParts();
if (mimeType.contains("alternative")) {
log.info("entering alternative loop");
for (MessagePart part : parts) {
mailBody = new String(Base64.decodeBase64(part.getBody()
.getData().getBytes()));
}
log.info(mailBody);
}
您可以使用以下方法:
private String getContent(Message message) {
StringBuilder stringBuilder = new StringBuilder();
try {
getPlainTextFromMessageParts(message.getPayload().getParts(), stringBuilder);
byte[] bodyBytes = Base64.decodeBase64(stringBuilder.toString());
String text = new String(bodyBytes, "UTF-8");
return text;
} catch (UnsupportedEncodingException e) {
logger.error("UnsupportedEncoding: " + e.toString());
return message.getSnippet();
}
}
private void getPlainTextFromMessageParts(List<MessagePart> messageParts, StringBuilder stringBuilder) {
for (MessagePart messagePart : messageParts) {
if (messagePart.getMimeType().equals("text/plain")) {
stringBuilder.append(messagePart.getBody().getData());
}
if (messagePart.getParts() != null) {
getPlainTextFromMessageParts(messagePart.getParts(), stringBuilder);
}
}
}
它將所有消息部分與mimeType“ text / plain”組合在一起,並將其作為一個字符串返回。
新的String(messageResult.getPayload()。getParts()。get(0).getBody()。decodeData())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.