Gmail API all messages

假装没事ソ 提交于 2019-12-01 04:54:17

问题


I need to get all messages in Inbox with gmail api. But I see only one way to do it.

  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
    

But for this way needed 100500 request. Have anybody idea how to get with one request all messages(or just payload field)?


回答1:


Use batch and request 100 messages at a time. You will need to make 1000 requests but the good news is that's quite fine and it'll be easier for everyone (no downloading 1GB response in a single request!).

Documented at: https://developers.google.com/gmail/api/guides/batch

There's a few other people that have asked about batching Gmail Api here on Stack Overflow, so just do a quick search to find answers and examples.




回答2:


The approach you are doing is correct, as there is no 'GetAll' API to download them

Reasons include:

Unbounded Result Sets

Pulling out an unlimited amount of emails (aka unbounded result set) is a resource hog on Google servers. Did you want the attachments AND images? These could be gigabytes of data.

Network Problems

Google has to read gigabytes form disk, store it in memory and send them over the internet. Google's server would handle it, but the bandwidth of internet connectivity would not work. Worst of all, if you issue this request again and again, you could perform a DDoS attack on Google.

Security Risk

If someone gains an API key of another user, they could download their entire mailbox. Hence Google provide paging to ensure that they can provide a securer service and reduce resource contention.

Therefore, it is there to protect you and other users, and themselves.



来源:https://stackoverflow.com/questions/24658969/gmail-api-all-messages

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!