【问题标题】:How can I quickly get a count of the messages in a user's mailbox?如何快速获取用户邮箱中的邮件计数?
【发布时间】:2019-10-26 05:57:53
【问题描述】:

我正在尝试使用 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 的值。批处理不起作用,因为在您已经遍历每个页面之前,无法知道您必须发出多少请求。而且 List 响应中的 resultSizeEstimate 属性非常不准确。

【问题讨论】:

  • 由于当前版本的 Gmail API 是第 1 版,因此它们没有提供太多灵活的功能。可能在以后的版本中包含此功能。
  • 查看我的评论。现在提供标签和整个邮箱的计数。

标签: gmail-api


【解决方案1】:

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

如果您想获取整个邮箱(所有邮件)的邮件和线程数,请使用新的 gmail.users.getProfile() 方法。您可以在 API Explorer 中试用: https://developers.google.com/gmail/api/v1/reference/users/getProfile

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 2014-10-10
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2014-01-05
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多