Gmail API所有邮件

时间:2014-07-09 16:22:30

标签: request messages quota gmail-api

我需要使用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`s获取循环中的所有消息

    While 
        GET https://www.googleapis.com/gmail/v1/users/somebody%40gmail.com/messages/147199d21bbaf5a5?key={YOUR_API_KEY}
    End of While
    
  3. 但是这种方式需要100500请求。 有人知道如何使用一个请求获取所有消息(或只是有效负载字段)?

2 个答案:

答案 0 :(得分:14)

一次使用批处理并请求100条消息。你需要提出1000个请求,但好消息是它非常好,对每个人来说都更容易(在一个请求中没有下载1GB的响应!)。

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

还有一些人在Stack Overflow上询问了有关批量处理Gmail Api的问题,所以只需快速搜索一下即可找到答案和示例。

答案 1 :(得分:2)

您正在采取的方法是正确的,因为没有“GetAll”API可以下载它们

原因包括:

无界结果集

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

网络问题

Google必须阅读千兆字节表格磁盘,将其存储在内存中并通过互联网发送。谷歌的服务器可以处理它,但互联网连接的带宽不起作用。最糟糕的是,如果您反复发出此请求,则可以在Google上执行DDoS攻击。

安全风险

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

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