Xojo Plugin GMail: Get a specific message (format="full")

Back to Index

Gets a specific message using format=full.

Documentation: https://developers.google.com/gmail/api/v1/reference/users/messages/get


Dim rest As New Chilkat.Rest
Dim success As Boolean

//   Provide a previously obtained OAuth2 access token.
Dim oauth2 As New Chilkat.OAuth2
oauth2.AccessToken = "OAUTH2_ACCESS_TOKEN"
rest.SetAuthOAuth2(oauth2)

success = rest.Connect("www.googleapis.com",443,True,True)
If (success <> True) Then
    System.DebugLog(rest.LastErrorText)
    Return
End If

rest.AddPathParam("messageId","15fc23688c553739")

rest.AddQueryParam("format","full")

Dim sbJson As New Chilkat.StringBuilder
success = rest.FullRequestNoBodySb("GET","/gmail/v1/users/me/messages/messageId",sbJson)
If (success <> True) Then
    System.DebugLog(rest.LastErrorText)
    Return
End If

If (rest.ResponseStatusCode <> 200) Then
    System.DebugLog("Received error response code: " + Str(rest.ResponseStatusCode))
    System.DebugLog("Response body:")
    System.DebugLog(sbJson.GetAsString())
    Return
End If

Dim json As New Chilkat.JsonObject
json.LoadSb(sbJson)

//  The following code parses the JSON response.
//  A sample JSON response is shown below the sample code.
Dim id As String
Dim threadId As String
Dim snippet As String
Dim historyId As String
Dim internalDate As String
Dim payloadPartId As String
Dim payloadMimeType As String
Dim payloadFilename As String
Dim payloadBodySize As Int32
Dim sizeEstimate As Int32
Dim i As Int32
Dim count_i As Int32
Dim strVal As String
Dim name As String
Dim value As String
Dim partId As String
Dim mimeType As String
Dim filename As String
Dim bodySize As Int32
Dim bodyAttachmentId As String
Dim j As Int32
Dim count_j As Int32
Dim k As Int32
Dim count_k As Int32
Dim bodyData As String
Dim i1 As Int32
Dim count_i1 As Int32
Dim json1 As Chilkat.JsonObject

id = json.StringOf("id")
threadId = json.StringOf("threadId")
snippet = json.StringOf("snippet")
historyId = json.StringOf("historyId")
internalDate = json.StringOf("internalDate")
payloadPartId = json.StringOf("payload.partId")
payloadMimeType = json.StringOf("payload.mimeType")
payloadFilename = json.StringOf("payload.filename")
payloadBodySize = json.IntOf("payload.body.size")
sizeEstimate = json.IntOf("sizeEstimate")
i = 0
count_i = json.SizeOfArray("labelIds")
While i < count_i
    json.I = i
    strVal = json.StringOf("labelIds[i]")
    i = i + 1
Wend
i = 0
count_i = json.SizeOfArray("payload.headers")
While i < count_i
    json.I = i
    name = json.StringOf("payload.headers[i].name")
    value = json.StringOf("payload.headers[i].value")
    i = i + 1
Wend
i = 0
count_i = json.SizeOfArray("payload.parts")
While i < count_i
    json.I = i
    partId = json.StringOf("payload.parts[i].partId")
    mimeType = json.StringOf("payload.parts[i].mimeType")
    filename = json.StringOf("payload.parts[i].filename")
    bodySize = json.IntOf("payload.parts[i].body.size")
    bodyAttachmentId = json.StringOf("payload.parts[i].body.attachmentId")
    j = 0
    count_j = json.SizeOfArray("payload.parts[i].headers")
    While j < count_j
        json.J = j
        name = json.StringOf("payload.parts[i].headers[j].name")
        value = json.StringOf("payload.parts[i].headers[j].value")
        j = j + 1
    Wend
    j = 0
    count_j = json.SizeOfArray("payload.parts[i].parts")
    While j < count_j
        json.J = j
        partId = json.StringOf("payload.parts[i].parts[j].partId")
        mimeType = json.StringOf("payload.parts[i].parts[j].mimeType")
        filename = json.StringOf("payload.parts[i].parts[j].filename")
        bodySize = json.IntOf("payload.parts[i].parts[j].body.size")
        bodyAttachmentId = json.StringOf("payload.parts[i].parts[j].body.attachmentId")
        k = 0
        count_k = json.SizeOfArray("payload.parts[i].parts[j].headers")
        While k < count_k
            json.K = k
            name = json.StringOf("payload.parts[i].parts[j].headers[k].name")
            value = json.StringOf("payload.parts[i].parts[j].headers[k].value")
            k = k + 1
        Wend
        k = 0
        count_k = json.SizeOfArray("payload.parts[i].parts[j].parts")
        While k < count_k
            json.K = k
            partId = json.StringOf("payload.parts[i].parts[j].parts[k].partId")
            mimeType = json.StringOf("payload.parts[i].parts[j].parts[k].mimeType")
            filename = json.StringOf("payload.parts[i].parts[j].parts[k].filename")
            bodySize = json.IntOf("payload.parts[i].parts[j].parts[k].body.size")
            bodyData = json.StringOf("payload.parts[i].parts[j].parts[k].body.data")

            json1 = json.ObjectOf("payload.parts[i].parts[j].parts[k]")
            i1 = 0
            count_i1 = json1.SizeOfArray("headers")
            While i1 < count_i1
                json1.I = i1
                name = json1.StringOf("headers[i].name")
                value = json1.StringOf("headers[i].value")
                i1 = i1 + 1
            Wend

            k = k + 1
        Wend
        j = j + 1
    Wend
    i = i + 1
Wend

System.DebugLog("Example Completed.")

Sample JSON Response Body

{
  "id": "15fc23688c553739",
  "threadId": "15fc23688c553739",
  "labelIds": [
    "IMPORTANT",
    "SENT",
    "INBOX"
  ],
  "snippet": "This is a test. \u200b",
  "historyId": "1438",
  "internalDate": "1510791874000",
  "payload": {
    "partId": "",
    "mimeType": "multipart/mixed",
    "filename": "",
    "headers": [
      {
        "name": "MIME-Version",
        "value": "1.0"
      },
      {
        "name": "Received",
        "value": "by 10.25.23.105 with HTTP; Wed, 15 Nov 2017 16:24:34 -0800 (PST)"
      },
      {
        "name": "X-Originating-IP",
        "value": "[2601:249:e00:9093:e894:b27f:e5d6:d01d]"
      },
      {
        "name": "Date",
        "value": "Wed, 15 Nov 2017 18:24:34 -0600"
      },
      {
        "name": "Delivered-To",
        "value": "matt@chilkat.io"
      },
      {
        "name": "Message-ID",
        "value": "\u003cCAPhjyBM1qqXS6NVB65W8Zt5-McF03qWSRDjW5am66wTMuard=w@mail.gmail.com\u003e"
      },
      {
        "name": "Subject",
        "value": "Test HTML email with image and attachment."
      },
      {
        "name": "From",
        "value": "Matt Fausey \u003cmatt@chilkat.io\u003e"
      },
      {
        "name": "To",
        "value": "Matt Fausey \u003cmatt@chilkat.io\u003e"
      },
      {
        "name": "Content-Type",
        "value": "multipart/mixed; boundary=\"001a11401a6c097887055e0ea572\""
      }
    ],
    "body": {
      "size": 0
    },
    "parts": [
      {
        "partId": "0",
        "mimeType": "multipart/related",
        "filename": "",
        "headers": [
          {
            "name": "Content-Type",
            "value": "multipart/related; boundary=\"001a11401a6c097885055e0ea571\""
          }
        ],
        "body": {
          "size": 0
        },
        "parts": [
          {
            "partId": "0.0",
            "mimeType": "multipart/alternative",
            "filename": "",
            "headers": [
              {
                "name": "Content-Type",
                "value": "multipart/alternative; boundary=\"001a11401a6c097882055e0ea570\""
              }
            ],
            "body": {
              "size": 0
            },
            "parts": [
              {
                "partId": "0.0.0",
                "mimeType": "text/plain",
                "filename": "",
                "headers": [
                  {
                    "name": "Content-Type",
                    "value": "text/plain; charset=\"UTF-8\""
                  },
                  {
                    "name": "Content-Transfer-Encoding",
                    "value": "quoted-printable"
                  }
                ],
                "body": {
                  "size": 22,
                  "data": "VGhpcyBpcyBhIHRlc3QuDQrigIsNCg=="
                }
              },
              {
                "partId": "0.0.1",
                "mimeType": "text/html",
                "filename": "",
                "headers": [
                  {
                    "name": "Content-Type",
                    "value": "text/html; charset=\"UTF-8\""
                  },
                  {
                    "name": "Content-Transfer-Encoding",
                    "value": "quoted-printable"
                  }
                ],
                "body": {
                  "size": 115,
                  "data": "PGRpdiBkaXI9Imx0ciI-VGhpcyBpcyBhIHRlc3QuPGltZyB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMCIgc3JjPSJjaWQ6aWlfamExcWY5MGwwXzE1ZmMyMzUzOWJkMDA3MjciPjxicj7igIs8L2Rpdj4NCg=="
                }
              }
            ]
          },
          {
            "partId": "0.1",
            "mimeType": "image/jpeg",
            "filename": "starfish.jpg",
            "headers": [
              {
                "name": "Content-Type",
                "value": "image/jpeg; name=\"starfish.jpg\""
              },
              {
                "name": "Content-Disposition",
                "value": "inline; filename=\"starfish.jpg\""
              },
              {
                "name": "Content-Transfer-Encoding",
                "value": "base64"
              },
              {
                "name": "Content-ID",
                "value": "\u003cii_ja1qf90l0_15fc23539bd00727\u003e"
              },
              {
                "name": "X-Attachment-Id",
                "value": "ii_ja1qf90l0_15fc23539bd00727"
              },
              {
                "name": "MIME-Version",
                "value": "1.0"
              },
              {
                "name": "Date",
                "value": "Wed, 15 Nov 2017 16:23:08 -0800"
              },
              {
                "name": "Message-ID",
                "value": "\u003cCAPhjyBMicJ9k-EXY5Efcvp8o_z_J3x8_G=mnC_znLXnyBogemQ@mail.gmail.com\u003e"
              },
              {
                "name": "Subject",
                "value": "Attachment"
              },
              {
                "name": "From",
                "value": "Matt Fausey \u003cmatt@chilkat.io\u003e"
              }
            ],
            "body": {
              "attachmentId": "ANGjdJ_ueuzzM9bpQ8l_tD27oDfn-smCe77viIAF1wy8ZeI09tK5vAuSS6V9Bahow4ikqaGleXqdQBeq8xhFkJ7WN-KKBSKvOfT2yD-XMlA1FC8AOKS2A8tBi5dDDbFrbnns33rfqEIRFAISslhdE481uB6sYfVoYjpuDThtW6Y96YA0Aso0P9txbKJwcwOeD0RxDav_vPzDjHuRuOYsGxbVTxesMB2eiMMw3i1y-WAu-pyWHqF0xMFehZmd7d-krKKdvI4UEgtzD9siXnnaH6MG55ykjBsjFRsmjKc-4K5fHeYHOf586Pkej5K238A",
              "size": 6229
            }
          }
        ]
      },
      {
        "partId": "1",
        "mimeType": "application/pdf",
        "filename": "helloWorld.pdf",
        "headers": [
          {
            "name": "Content-Type",
            "value": "application/pdf; name=\"helloWorld.pdf\""
          },
          {
            "name": "Content-Disposition",
            "value": "attachment; filename=\"helloWorld.pdf\""
          },
          {
            "name": "Content-Transfer-Encoding",
            "value": "base64"
          },
          {
            "name": "X-Attachment-Id",
            "value": "f_ja1qgya31"
          }
        ],
        "body": {
          "attachmentId": "ANGjdJ934ScA-kvdsvBvOjO9z-RYmRLyO8PvqOCzwkk-smeLVpKqeoxXNIn9FL_RbzA6qmTWKQTJehrBVmX4NqYtFsivmwRfzIWj-A-SqvJATRhjEGOntUeBS0fPZ9xy_enmH5Qgi0iSdBmwAn1CBnNghEKdMjvxTMjLxqn2mSO4gvxIh8ahJZDMN1p8KMYO98dM2XfyNndltnK-sd_DizNR9BQu10w5WSTLeFfOh61SxGKeq4Dt3W5USQlx7dEG7dRiBDvjFM6wo2HVeSnGEVphOwx80t1MQdhRN-YOHCAahIqy7Z0-BkPIIjTeUtl_pST8oMi0IgJoo9x1oomY3JZp2OxWuNyOVWDGVsDavGHc6wRhwK5pJrDceCWxNdPEwExeYA84WOAFXE2D6I3m",
          "size": 934
        }
      }
    ]
  },
  "sizeEstimate": 11716
}