【问题标题】:Gmail API all messagesGmail API 所有邮件
【发布时间】:2014-08-30 18:59:10
【问题描述】:

我需要使用 gmail api 获取收件箱中的所有邮件。但我只看到一种方法。

  1. 获取消息列表(id, threadID)

    GET https://www.googleapis.com/gmail/v1/users/somebody%40gmail.com/messages?labelIds=INBOX&key={YOUR_API_KEY}
    
  2. 使用 id 循环获取所有消息

    While 
        GET https://www.googleapis.com/gmail/v1/users/somebody%40gmail.com/messages/147199d21bbaf5a5?key={YOUR_API_KEY}
    End of While
    

但是这种方式需要 100500 请求。 有谁知道如何通过一个请求获取所有消息(或只是 payload 字段)?

【问题讨论】:

标签: request messages quota gmail-api


【解决方案1】:

使用批处理并一次请求 100 条消息。您将需要发出 1000 个请求,但好消息是这很好,而且对每个人来说都更容易(无需在单个请求中下载 1GB 响应!)。

记录在: https://developers.google.com/gmail/api/guides/batch

还有其他一些人在 Stack Overflow 上询问过批处理 Gmail Api 的问题,因此只需快速搜索即可找到答案和示例。

【讨论】:

    【解决方案2】:

    您正在做的方法是正确的,因为没有“GetAll” API 来下载它们

    原因包括:

    无限的结果集

    提取无限数量的电子邮件(也称为无限结果集)是 Google 服务器上的资源占用。你想要附件和图片吗?这些可能是千兆字节的数据。

    网络问题

    Google 必须从磁盘读取千兆字节,将其存储在内存中并通过互联网发送。谷歌的服务器会处理它,但互联网连接的带宽不起作用。最糟糕的是,如果您一次又一次地发出此请求,您可能会对 Google 执行 DDoS 攻击。

    安全风险

    如果有人获得另一个用户的 API 密钥,他们可以下载整个邮箱。因此,Google 提供分页以确保他们能够提供更安全的服务并减少资源争用。

    因此,它可以保护您和其他用户以及他们自己。

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 2017-09-02
      • 2020-04-28
      • 1970-01-01
      • 2012-01-01
      • 2015-11-02
      • 2020-06-30
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多