到目前为止,我已经能够浏览我的一个帐户中的所有电子邮件并打印出消息片段,但我希望能够打印出完整的消息。
这是我目前使用的代码。
public static void getEmails() {
try {
ListMessagesResponse response = service.users().messages().list("me").execute();
List<Message> messages = new ArrayList<Message>();
while (response.getMessages() != null) {
messages.addAll(response.getMessages());
if (response.getNextPageToken() != null) {
String pageToken = response.getNextPageToken();
response = service.users().messages().list("me").setPageToken(pageToken).execute();
} else {
break;
}
}
for (Message message : messages) {
System.out.println(message.getId());
Message test = service.users().messages().get("me", message.getId()).execute();
System.out.println(test.getSnippet());
}
} catch (IOException e) {
e.printStackTrace();
}
}
如何以纯文本形式打印出消息的全部内容?
对于那些想知道答案的人来说,你只需要添加这段代码。
Message test = service.users().messages().get("me", message.getId()).setFormat("full").execute();
System.out.println(StringUtils.newStringUtf8(Base64.decodeBase64(test.getPayload().getBody().getData())));
这将给你html代码的工作,在那里你可以提取你需要的东西。希望这对你有帮助!
要读取主体部分,需要从返回的JSON对象中提取它,然后解码:
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;
//Code from the post
System.out.println(StringUtils.newStringUtf8(Base64.decodeBase64(test.getPayload().getParts().get(0).getBody().getData())));