Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gmail API all messages

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)?

like image 954
imCaps Avatar asked Dec 01 '22 19:12

imCaps


2 Answers

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.

like image 88
Eric D Avatar answered Jan 13 '23 14:01

Eric D


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.

like image 34
Dominic Zukiewicz Avatar answered Jan 13 '23 12:01

Dominic Zukiewicz