gmail api:获取具有特定标签

时间:2018-02-15 19:06:45

标签: java email gmail-api

我正在尝试使用特定标签获取所有消息。 我正在使用的测试代码在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,我的拳头尝试获取具有特定标签的所有消息失败:不同。

为什么标有标签的帖子中的邮件并非都标有相同的标签?

1 个答案:

答案 0 :(得分:0)

当你说“有超过10条消息的对话时,我只得到一条消息。”你得到的是1个消息线程而不是10个单独的消息。可能是那些对话只属于1个线程。查看Managing ThreadsManaging Labels