java - 无法在 JAVA 中使用 GMAIL api 获取前 10 条消息?

标签 java gmail-api

我尝试使用 .setMaxResults() 将结果限制为 10,但它会获取所有结果。

public static List<Message> listMessagesWithLabels(Gmail service, String userId, 
                    List<String> labelIds) throws MessagingException, IOException{

    ListMessagesResponse response = service.users()
    .messages()
    .list(userId)
    .setLabelIds(labelIds)
    .setMaxResults(Long.valueOf(10))
    .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;
        }
    }

    for (Message message : messages) {
        System.out.println(message.getThreadId());
    }

    return messages;
}


最佳答案

我从未使用过 Gmail API,但通常限制结果意味着限制每页的结果数量。 但您正在主动获取所有页面。只需将 while 循环替换为

if (response.getMessages() != null) {
    messages.addAll(response.getMessages());        
}

你应该没问题。

关于java - 无法在 JAVA 中使用 GMAIL api 获取前 10 条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58813534/

相关文章:

javascript - 回调返回未定义

java - 为什么所有匿名类都是隐式最终的?

java - 在 Java 中的 App Engine 上复制 blobstore 实体的最佳方法是什么?

python - 从 Gmail API 解码 MIME 电子邮件 -\r\n 和 3D - Python

javascript - 如何在 Gmail API 中获取内部日期?

java - GoogleAccountCredential getSelectedAccountName() 在设置并实现权限后返回 null

Java:将 Spring Autowired 库与 Guice 程序结合使用

java - 在没有 OpenCv 包管理器的情况下在 Eclipse 上创建 Android OpenCV 项目

java - "Server returned HTTP response code: 400"尝试用 Java 发送短信

php - 使用 Gmail API 发送带签名的电子邮件