问题描述
我正在使用Gmail API在我的简单Java应用程序中获取电子邮件数据,并且我使用,但无法获取完整的电子邮件内容。我使用了message.getRaw(),但它返回null。
所以,任何人都可以帮助我如何访问电子邮件内容。
I am using Gmail API to get email data in my simple Java application and I got everything whatever I want using quickstart but I am unable to get full email content. I have used message.getRaw() but it returns null. So, anyone can help how can I access email content.
推荐答案
使用 messages.list 以获取消息的标识符,稍后将通过 messages.get 分别获取完全限定的消息。
由于某些原因,message.list 忽略在请求中设置的字段,即Google发送回仅包含默认字段的json 消息(ID,threadId所),nextPageToken这个
。这就是为什么 message.getRaw()
返回 null
。
For some reason messages.list ignores fields that are set in request i.e. google sends back json that contains only default fields "messages(id,threadId),nextPageToken"
. That's why message.getRaw()
returns null
.
/**
* 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);
}
/**
* 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();
}
这篇关于如何使用Gmail API获取电子邮件正文内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!