1
votes

How to avoid loading attachments data from Gmail Rest API with get message request.

Using the fields parameter at least we can avoid loading few fields but when I want to load message body, attachment data also coming along with body just like IMAP

1

1 Answers

0
votes

You don't get the attachment like you do in IMAP. You get an attachmentId which you have to use in an additional request to get the attachment.

I just sent a message with an attached image to myself. This is what the response from the API looks like:

{
 "id": "1573ec1aa0976b42",
 "threadId": "1573ec1aa0976b42",
 "labelIds": [
  "SENT",
  "INBOX",
  "IMPORTANT",
  "UNREAD"
 ],
 "snippet": "",
 "historyId": "939514",
 "internalDate": "1474226662000",
 "payload": {
  "mimeType": "multipart/related",
  "filename": "",
  "headers": [ ... ],
  "body": {
   "size": 0
  },
  "parts": [
   {
    "mimeType": "multipart/alternative",
    "filename": "",
    "headers": [
     {
      "name": "Content-Type",
      "value": "multipart/alternative; boundary=94eb2c0d3cba8637a2053ccd2461"
     }
    ],
    "body": {
     "size": 0
    },
    "parts": [
     { ... },
     {
      "partId": "1",
      "mimeType": "image/png",
      "filename": "Screen Shot",
      "headers": [ ... ],
      "body": {
       "attachmentId": "ANGjdJ-bmCvsIaV-4KfALXzVV_D567w4i6ksLnwIZhLAl3VXCE335663UbmOLC_vbLrCFusNtnWVpdTv3i88uR482kFwLZqAcwmI7C5gFlamob2aK4-lqAPlCZs17jtCQR9y5Mt4nnpP_Kg64N9qgXbDF0E2vYnEw4xwtEKEo4fRIAbc94ZjjfynFD832mh1B37XFMt-bYw9wkNv24xBife0koBNYpKs-gGLJkfu2EoZouqunGDX9ry1jq2jW2AClWcFXPXvgRBMjUcoRDPtvb9LLLrBhDjU1hu6r1Ibc3c2BSoBogT8QyIp2VUCuFU",
       "size": 1511996
      }
     }
    ]
   },
   "sizeEstimate": 1513185
}

As you can see, it just contains an attachmentId and no actual attachment data.