How to get full message body in Gmail?

后端 未结 7 1704
旧巷少年郎
旧巷少年郎 2020-12-16 15:07

I want to get full message body. So I try:

Message gmailMessage = service.users().messages().get(\"me\", messageId).setFormat(\"full\").execute();

7条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-16 15:39

    If you have the message (com.google.api.services.gmail.model.Message) you could use the following methods:

    public 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, StandardCharsets.UTF_8);
            return text;
        } catch (UnsupportedEncodingException e) {
            logger.error("UnsupportedEncoding: " + e.toString());
            return message.getSnippet();
        }
    }
    
    private void getPlainTextFromMessageParts(List 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);
            }
        }
    }
    

    It combines all message parts with the mimeType "text/plain" and returns it as one string.

提交回复
热议问题