我正在尝试使用特定标签获取所有消息。 我正在使用的测试代码在gmail api文档中是相同的:
ListMessagesResponse response = service.users().messages().list(userId)
.setLabelIds(labelIds).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(userId).setLabelIds(labelIds)
.setPageToken(pageToken).execute();
} else {
break;
}
}
log.info("num messages: {}", messages.size());
问题是我收到的邮件数量远少于我在gmail web上看到的选择此标签的邮件数量。 例如,有一个超过10条消息的对话,我只得到一条消息。
我原以为使用gmail api列出带有特定标签的邮件会返回带有此标签的所有邮件:就像您在选择此标签时在Web界面中看到的所有邮件一样。
如果这有帮助,我试图获得的消息有多个标签。
感谢您的帮助。
更新:
经过一些测试后,我决定尝试搜索具有特定标签而不是消息的线程,一旦我拥有带有此标签的线程,我就会获得每个线程中的所有消息。
我注意到的事实是,如果一个线程有一个标签,并且线程中的所有消息都标有这个标签,这就是为什么,imho,我的拳头尝试获取具有特定标签的所有消息失败:不同。
为什么标有标签的帖子中的邮件并非都标有相同的标签?
答案 0 :(得分:0)
当你说“有超过10条消息的对话时,我只得到一条消息。”你得到的是1个消息线程而不是10个单独的消息。可能是那些对话只属于1个线程。查看Managing Threads和Managing Labels。