我正在尝试使用Gmail API计算用户邮箱中的所有电子邮件.这意味着运行类似的东西
do{
page = request.execute();
if (page.getMessages() != null){
totalSize += page.getMessages().size();
}
request.setPageToken(page.getNextPageToken());
}while (request.getPageToken() != null && request.getPageToken().length() > 0);
Run Code Online (Sandbox Code Playgroud)
问题是对于大型邮箱,这可能是一个漫长的过程,需要许多API调用.例如,一个包含31,000封电子邮件的邮箱运行时间超过一分钟,并且需要300多次迭代才能运行.
有没有更好的办法?
我尝试过使用maxResults参数,但默认为100并忽略任何> 100的值.批处理不起作用,因为在您已遍历每个页面之前,无法知道必须进行多少次请求.resultSizeEstimate列表响应中的属性是荒谬的不准确.
Gmail API现在使用Labels.Get()方法为任何标签上的邮件和线程提供总计和未读计数.请参阅:https: //developers.google.com/gmail/api/release-notes 和 https://developers.google.com/gmail/api/v1/reference/users/labels
如果要获取整个邮箱的消息和线程数(所有邮件),请使用新的gmail.users.geProfile()方法.您可以在API资源管理器中试用:https: //developers.google.com/gmail/api/v1/reference/users/getProfile
| 归档时间: |
|
| 查看次数: |
4870 次 |
| 最近记录: |