无法在 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());
}
你应该没事的。
我尝试使用 .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());
}
你应该没事的。