0
我正在使用Gmail API在我的簡單Java應用程序中獲取電子郵件數據,並且使用quickstart獲取了所需的所有內容,但我無法獲取完整的電子郵件內容。我用過message.getRaw(),但它返回null。 因此,任何人都可以幫助我如何訪問電子郵件內容。如何使用Gmail API獲取電子郵件正文內容
我正在使用Gmail API在我的簡單Java應用程序中獲取電子郵件數據,並且使用quickstart獲取了所需的所有內容,但我無法獲取完整的電子郵件內容。我用過message.getRaw(),但它返回null。 因此,任何人都可以幫助我如何訪問電子郵件內容。如何使用Gmail API獲取電子郵件正文內容
使用messages.list以獲得消息,這將在以後用於經由messages.get分別得到完全限定消息的標識符。
由於某些原因,messages.list 忽略了字段,這些字段在請求中設置,即谷歌發回的json只包含默認字段"messages(id,threadId),nextPageToken"
。這就是爲什麼message.getRaw()
返回null
。
api-explorer - gmail.users.messages.list
/**
* Returns empty messages sent between after and before
* that contain only identifiers.
* @param after
* @param before
* @param fields fields to be included in response
* (IGNORED see api-explorer)
* @return
*/
public List<Message> getEmptyMessages(Date after, Date before, String fields) {
Gmail.Users.Messages.List request = gmailService.users().messages().list("me")
// or setQ("is:sent after:yyyy/MM/dd before:yyyy/MM/dd")
.setLabelIds(Arrays.asList("SENT"))
.setQ("after:" + gmailFormat(after) +" "+
"before:"+ gmailFormat(before))
.setMaxResults(MAX_RESULTS)
.setFields(fields);
List<Message> list = new LinkedList<>();
ListMessagesResponse response = null;
do {
response = request.execute();
list.addAll(response.getMessages());
request.setPageToken(response.getNextPageToken());
} while (request.getPageToken() != null && request.getPageToken().length() > 0);
return list;
}
public String gmailFormat(Date d) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
return sdf.format(d);
}
api-explorer - gmail.users.messages.get
/**
* Returns "fully-qualified" message.
* @param id identifier of the message to be obtained.
* @param fields fields to be included in response e.g. "raw,snippet"
* (use api-explorer to build this string)
* @return
*/
public Message getFullyQualifiedMessage(String id, String fields) {
return gmailService.users().messages().get("me", id)
.setFormat("FULL")
.setFields(fields)
.execute();
}
隨着電子郵件的內容,你的意思是在電子郵件的文本? :) – Tholle