如何快速计算用户邮箱中的邮件数?

Dan*_*gio 6 gmail-api

我正在尝试使用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列表响应中的属性是荒谬的不准确.

Eri*_*c D 7

Gmail API现在使用Labels.Get()方法为任何标签上的邮件和线程提供总计和未读计数.请参阅:https: //developers.google.com/gmail/api/release-noteshttps://developers.google.com/gmail/api/v1/reference/users/labels

如果要获取整个邮箱的消息和线程数(所有邮件),请使用新的gmail.users.geProfile()方法.您可以在API资源管理器中试用:https: //developers.google.com/gmail/api/v1/reference/users/getProfile