我需要使用gmail api获取收件箱中的所有邮件。但我只看到一种方法。
获取邮件列表( id,threadID )
GET https://www.googleapis.com/gmail/v1/users/somebody%40gmail.com/messages?labelIds=INBOX&key={YOUR_API_KEY}
使用id`s获取循环中的所有消息
While
GET https://www.googleapis.com/gmail/v1/users/somebody%40gmail.com/messages/147199d21bbaf5a5?key={YOUR_API_KEY}
End of While
但是这种方式需要100500请求。 有人知道如何使用一个请求获取所有消息(或只是有效负载字段)?
答案 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提供分页功能,以确保他们能够提供更安全的服务并减少资源争用。
因此,它可以保护您和其他用户以及他们自己。