我需要以用户邮箱中的格式获取检索到的邮件,即: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;
}
}
答案 0 :(得分:4)
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);
}
答案 1 :(得分:1)
您可以使用以下方法:
EventAggregator
它将所有消息部分与mimeType“text / plain”组合在一起,并将其作为一个字符串返回。
答案 2 :(得分:-1)
新字符串(messageResult.getPayload()。getParts()。get(0).getBody()。decodeData())