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

时间:2014-08-29 20:57:42

标签: 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);

问题是对于大型邮箱,这可能是一个漫长的过程,需要许多API调用。例如,一个包含31,000封电子邮件的邮箱运行时间超过一分钟,并且需要300多次迭代才能运行。

有更好的方法吗?

我已尝试使用maxResults参数,但默认为100并忽略任何值> 100。批处理不起作用,因为在您已遍历每个页面之前,无法知道必须进行多少次请求。 resultSizeEstimate属性非常不准确。

1 个答案:

答案 0 :(得分:6)

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