Gmail API 所有邮件消息

6

我需要使用Gmail API获取收件箱中的所有消息。但是我只看到一种方法可以实现。

  1. Get list of messages(id, threadID)

    GET https://www.googleapis.com/gmail/v1/users/somebody%40gmail.com/messages?labelIds=INBOX&key={YOUR_API_KEY}
    
  2. With id`s get all messages in loop

    While 
        GET https://www.googleapis.com/gmail/v1/users/somebody%40gmail.com/messages/147199d21bbaf5a5?key={YOUR_API_KEY}
    End of While
    
但是这种方式需要100500个请求。有没有人有想法如何通过一个请求获取所有的消息(或仅payload字段)?

哟,你在凭证中使用了哪个键作为你的 API KEY?我搞不清楚应该使用哪个键。我一直收到 401 错误。 - Aaron
抱歉!我不记得了!您可以使用他们的库 https://developers.google.com/gmail/api/quickstart/python - imCaps
2个回答

18

批处理并每次请求100条消息。虽然您需要进行1000个请求,但好消息是这样做很好,并且对于每个人来说都更容易(无需在单个请求中下载1GB的响应!)。

文档链接: https://developers.google.com/gmail/api/guides/batch

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


5
您所采取的方法是正确的,因为没有“GetAll”API可以下载它们。
原因包括:

无界结果集

从Google服务器中提取无限量的电子邮件(即无界结果集)会消耗大量资源。您是否想要附件和图片?这些可能是几千兆字节的数据。

网络问题

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

安全风险

如果有人获得了另一个用户的API密钥,他们可以下载整个邮箱。因此,Google提供分页以确保他们可以提供更安全的服务并减少资源争用。
因此,这是为了保护您和其他用户,以及他们自己。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接