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

Unable to get first 10 messages using GMAIL api in JAVA?

我尝试使用 .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());        
}

你应该没事的。