Sample code for 30+ languages & platforms
Visual FoxPro Requires Chilkat v11.0.0+

Get GMail Message format=full

See more GMail REST API Examples

Examines the JSON returned when getting a message using format=full.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL lcId
LOCAL loResp
LOCAL loJson
LOCAL lcStrVal
LOCAL lcName
LOCAL lcValue
LOCAL lcPartId
LOCAL lcMimeType
LOCAL lcFilename
LOCAL lnBodySize
LOCAL lcBodyAttachmentId
LOCAL j
LOCAL lnCount_j
LOCAL lcBodyData
LOCAL k
LOCAL lnCount_k
LOCAL loJson1
LOCAL lnI1
LOCAL lnCount_i1
LOCAL lcId
LOCAL lcThreadId
LOCAL lcSnippet
LOCAL lcHistoryId
LOCAL lcInternalDate
LOCAL lcPayloadPartId
LOCAL lcPayloadMimeType
LOCAL lcPayloadFilename
LOCAL lnPayloadBodySize
LOCAL lnSizeEstimate
LOCAL i
LOCAL lnCount_i

lnSuccess = 0

*  This example requires the Chilkat API to have been previously unlocked.
*  See Global Unlock Sample for sample code.

loHttp = CreateObject('Chilkat.Http')

loHttp.AuthToken = "ACCESS_TOKEN"

loHttp.Accept = "application/json"

*  This is the ID for a particular message in our mailbox...
lcId = "1712bc1dc22da2a2"

*  Download the message using format=full
loHttp.SetUrlVar("id",lcId)

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpNoBody("GET","https://www.googleapis.com/gmail/v1/users/userId/messages/{$id}?format=full",loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loResp
    CANCEL
ENDIF

? "Response Status Code: " + STR(loResp.StatusCode)

loJson = CreateObject('Chilkat.JsonObject')
loJson.Load(loResp.BodyStr)
loJson.EmitCompact = 0
? loJson.Emit()

IF (loResp.StatusCode <> 200) THEN
    ? "Failed."
    RELEASE loHttp
    RELEASE loResp
    RELEASE loJson
    CANCEL
ENDIF

*  Use this online tool to generate parsing code from sample JSON: 
*  Generate Parsing Code from JSON

*  Here is a sample "format=full" response that contains 4 attachments:
*  The JSON parsing source code is shown below...

*  {
*    "id": "1712bc1dc22da2a2",
*    "threadId": "1712bc1dc22da2a2",
*    "labelIds": [
*      "UNREAD",
*      "IMPORTANT",
*      "CATEGORY_PERSONAL",
*      "INBOX"
*    ],
*    "snippet": "Hello, this is a test email with attachments..",
*    "historyId": "759379",
*    "internalDate": "1585577056000",
*    "payload": {
*      "partId": "",
*      "mimeType": "multipart/mixed",
*      "filename": "",
*      "headers": [
*        {
*          "name": "Delivered-To",
*          "value": "chilkat.support@gmail.com"
*        },
*        {
*          "name": "Received",
*          "value": "..."
*        },
*        {
*          "name": "X-Received",
*          "value": "..."
*        },
*        {
*          "name": "X-Google-Smtp-Source",
*          "value": "..."
*        },
*        {
*          "name": "X-Received",
*          "value": "..."
*        },
*        {
*          "name": "ARC-Seal",
*          "value": "..."
*        },
*        {
*          "name": "ARC-Message-Signature",
*          "value": "..."
*        },
*        {
*          "name": "ARC-Authentication-Results",
*          "value": "..."
*        },
*        {
*          "name": "Return-Path",
*          "value": "..."
*        },
*        {
*          "name": "Received",
*          "value": "..."
*        },
*        {
*          "name": "Received-SPF",
*          "value": "..."
*        },
*        {
*          "name": "Authentication-Results",
*          "value": "..."
*        },
*        {
*          "name": "DKIM-Signature",
*          "value": "..."
*        },
*        {
*          "name": "DKIM-Signature",
*          "value": "..."
*        },
*        {
*          "name": "Subject",
*          "value": "Test email with attachments"
*        },
*        {
*          "name": "From",
*          "value": "..."
*        },
*        {
*          "name": "To",
*          "value": "..."
*        },
*        {
*          "name": "Date",
*          "value": "Mon, 30 Mar 2020 14:04:16 +0000"
*        },
*        {
*          "name": "Mime-Version",
*          "value": "1.0"
*        },
*        {
*          "name": "Content-Type",
*          "value": "multipart/mixed;  boundary=\"=_wNvwW3YTnQBZ24pmfFNfay3S6M-pHT7KdZIkXwYF-BFiPYNE\""
*        },
*        {
*          "name": "References",
*          "value": "..."
*        },
*        {
*          "name": "X-Mailer",
*          "value": "..."
*        },
*        {
*          "name": "Thread-Index",
*          "value": "AQHWBpwYB0UZvgGPT1KluJJUCF0BGg=="
*        },
*        {
*          "name": "Thread-Topic",
*          "value": "Test email with attachments"
*        },
*        {
*          "name": "Message-ID",
*          "value": "..."
*        },
*        {
*          "name": "X-SES-Outgoing",
*          "value": "2020.03.30-54.240.27.106"
*        },
*        {
*          "name": "Feedback-ID",
*          "value": "..."
*        }
*      ],
*      "body": {
*        "size": 0
*      },
*      "parts": [
*        {
*          "partId": "0",
*          "mimeType": "multipart/alternative",
*          "filename": "",
*          "headers": [
*            {
*              "name": "Content-Type",
*              "value": "multipart/alternative;  boundary=\"=_wNvwHW2hdOZkYPaJAhdOY4+XBEFNAcvIZ1sQcW4JkBcAdDqA\""
*            }
*          ],
*          "body": {
*            "size": 0
*          },
*          "parts": [
*            {
*              "partId": "0.0",
*              "mimeType": "text/plain",
*              "filename": "",
*              "headers": [
*                {
*                  "name": "Content-Type",
*                  "value": "text/plain; charset=UTF-8"
*                },
*                {
*                  "name": "Content-Transfer-Encoding",
*                  "value": "7bit"
*                }
*              ],
*              "body": {
*                "size": 129,
*                "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0IGVtYWlsIHdpdGggYXR0YWNobWVudHMuLg0KIA0KIA0KIA0KLS0gDQogQmVzdCBSZWdhcmRzLA0KIE1hdHQgRmF1c2V5DQogQ2hpbGthdCBTb2Z0d2FyZSwgSW5jLiANCg0KIA0KDQogDQog"
*              }
*            },
*            {
*              "partId": "0.1",
*              "mimeType": "multipart/related",
*              "filename": "",
*              "headers": [
*                {
*                  "name": "Content-Type",
*                  "value": "multipart/related;  boundary=\"=_wNvw-LQZP2xD5vBm4q4esgoD5F4j3w+DRPUkkzOidpnpXAre\""
*                }
*              ],
*              "body": {
*                "size": 0
*              },
*              "parts": [
*                {
*                  "partId": "0.1.0",
*                  "mimeType": "text/html",
*                  "filename": "",
*                  "headers": [
*                    {
*                      "name": "Content-Type",
*                      "value": "text/html; charset=utf-8"
*                    },
*                    {
*                      "name": "Content-Transfer-Encoding",
*                      "value": "7bit"
*                    }
*                  ],
*                  "body": {
*                    "size": 530,
*                    "data": "PGh0bWw-DQogIDxoZWFkPg0KDQogICAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KICA8L2hlYWQ-DQogIDxib2R5Pg0KICAgIEhlbGxvLCB0aGlzIGlzIGE8Zm9udCBjb2xvcj0iI2ZmMDAwMCI-IHRlc3Q8L2ZvbnQ-IGVtYWlsIHdpdGgNCiAgICBhdHRhY2htZW50cy4uPGJyPg0KICAgIDxicj4NCiAgICA8aW1nIG1vei1kby1ub3Qtc2VuZD0iZmFsc2UiDQogICAgICBzcmM9ImNpZDpwYXJ0MS5GMEI1MzVEQi5DQjZFN0ExMkBjaGlsa2F0c29mdC5jb20iIGFsdD0ic2VhaG9yc2UiDQogICAgICB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMCI-PGJyPg0KICAgIDxkaXYgY2xhc3M9Im1vei1zaWduYXR1cmUiPi0tIDxicj4NCiAgICAgIEJlc3QgUmVnYXJkcyw8YnI-DQogICAgICBNYXR0IEZhdXNleTxicj4NCiAgICAgIENoaWxrYXQgU29mdHdhcmUsIEluYy4NCiAgICAgIDxwPg0KICAgICAgPC9wPg0KICAgIDwvZGl2Pg0KICA8L2JvZHk-DQo8L2h0bWw-DQo="
*                  }
*                },
*                {
*                  "partId": "0.1.1",
*                  "mimeType": "image/jpeg",
*                  "filename": "seahorse.jpg",
*                  "headers": [
*                    {
*                      "name": "Content-Type",
*                      "value": "image/jpeg"
*                    },
*                    {
*                      "name": "Content-Id",
*                      "value": "\u003cpart1.F0B535DB.CB6E7A12@chilkatsoft.com\u003e"
*                    },
*                    {
*                      "name": "Content-Disposition",
*                      "value": "inline; filename=seahorse.jpg"
*                    },
*                    {
*                      "name": "Content-Transfer-Encoding",
*                      "value": "base64"
*                    }
*                  ],
*                  "body": {
*                    "attachmentId": "ANGjdJ-Z1c9gUGsEzexYYEsF5nLHGUaNiZQs5HkuFQVPo5jq1eze8poigmarvERUIRj1coKUaftiQPWhiZWaFyLDcyjFbfLdjWyyO3AxRO8pY5liAhVp1bt_5f79Nk0vfnZXL0OnZmNAMdrcFe645DbsajwDZcoYnWVcsV9Fe6PCNq41e6XW8Ko4Ex7zMzkATiwlLyx0RLcR0hl-FuZ-UVpQI0JeMTkNi4eN5-9L4dRU7HTo9qEyFW_p3__vXrnEJvmEvWXNUqxKLktcZvkvql6mnAVMDiIapqsE6x0EAvFobre7sf1_T6ieVlA-m92vrtELC2HHdxzkU-qhC_LuoOSOz8nd8tfWsrB8zex0v6NFFP9mJmBUb1QGtCGTxLdI40z_LdMOSiaqmeCq4o_s",
*                    "size": 24388
*                  }
*                }
*              ]
*            }
*          ]
*        },
*        {
*          "partId": "1",
*          "mimeType": "application/pdf",
*          "filename": "helloWorld.pdf",
*          "headers": [
*            {
*              "name": "Content-Type",
*              "value": "application/pdf; name=helloWorld.pdf"
*            },
*            {
*              "name": "Content-Transfer-Encoding",
*              "value": "base64"
*            },
*            {
*              "name": "Content-Disposition",
*              "value": "attachment; filename=helloWorld.pdf"
*            }
*          ],
*          "body": {
*            "attachmentId": "ANGjdJ-oy3aCuZISJKLAhUdaEksCEklbAPyMaWzFgqOMGbPCRkgwgeu_Kttd99C17OBTHROkDZGekibTKWXGfscB5ww7fw4E65_V1dQ-jHhb2TD1Cdm58-BbNw2iDxzptco8iILPiSnLLfFn5Ps7nsRcxHaGTt3r0yqFKCuIYNnPK1vM04BXI_cfzo-HnI4I3tD6oHNHOGVQrL01MdShFQjPELPUjXM8z1qs7Kom-QyvV1iOldUN-66UuhynsmDX-CMM5TIdB-8KD_lmdhf-0DqG8JnCA20XpXyfqwS8XFkPA-t-QSjb7SdkHQFtQ4lz2PcBREFzZ2eI5j0l0Y_dQHRPYTeMwkVl1yl4MfFT4C4iso3VSF-eqaIjiFCbXKCFNyeEIW5WFsv189dhlSqU",
*            "size": 934
*          }
*        },
*        {
*          "partId": "2",
*          "mimeType": "application/x-gzip",
*          "filename": "hamlet.xml.gz",
*          "headers": [
*            {
*              "name": "Content-Type",
*              "value": "application/x-gzip; name=hamlet.xml.gz"
*            },
*            {
*              "name": "Content-Transfer-Encoding",
*              "value": "base64"
*            },
*            {
*              "name": "Content-Disposition",
*              "value": "attachment; filename=hamlet.xml.gz"
*            }
*          ],
*          "body": {
*            "attachmentId": "ANGjdJ9rvj1ebIc-f0cXG0kwsb6pDBkRCNk3IQXbJ5z0-s2mEcVat3Pp6pVm3rTkRLOyeXHzRcTuel7nxRFJX6WVAKtG-5B-GL_b6DlsOWOzH4A_IKlyJ9U4aeWT02CgQL8oRwlCu1h0BtnY6lT8zureboGOqR7qoa-i5jH8xr6ds0nUDZp71lAwfOjji3eG6Wg6HfzWzWUThYPH3ba0_q35Jii8JIMhyJwwZnGjN3lvW_VhN6UIL1DIpop95b8rdwJdpyUavm7VhGtdNrI-mpgWQtT7WIAdIe6a-O74Zf4AB7uG7bp9R-IMBqQT-1jQqkN2_xlSpe3meWbuNu-4zsYfXN-IqM-Iy4dudAXjt0aY3Y8zxuHfW5qT7o4u8wSszhTIjM1j8lt-N7GZqnwJ",
*            "size": 77409
*          }
*        },
*        {
*          "partId": "3",
*          "mimeType": "text/plain",
*          "filename": "brasil_cert.pem",
*          "headers": [
*            {
*              "name": "Content-Type",
*              "value": "text/plain; name=brasil_cert.pem"
*            },
*            {
*              "name": "Content-Transfer-Encoding",
*              "value": "base64"
*            },
*            {
*              "name": "Content-Disposition",
*              "value": "attachment; filename=brasil_cert.pem"
*            }
*          ],
*          "body": {
*            "attachmentId": "ANGjdJ8nGD_xRHvjDwNIaSUleWCWk15ksUleks0fJ29gfGVOebzjBOUnAHYgKPefUQ6d6ExtqYubpvGCka1kJAB4gFwsnhQeflBhFNkORBqtb6FAGq0FcNgrbuxyKywmoHOUV4GDsNs4OGroEcFhBeZNQ8XKEdEoaO8ht8DARn2LncjxioQ4TmZ6jawmMF-mLbW1mz4QjwNir5jLOsE11tYZV2tLDoqjsubKeJJA8xojWo9r50zWfJFgWJKXZJwyNvKyZTwLmmBL_ATFxLFp4Nvo4K37uuVdUCG8WXiWwNr0oIV1RZOd_ZOA7M6Jif0wUcppJdxXRqlsFJqGlcVsLowkVGrJNAMe-fLY1x4w5od3axZIdZQgBPlVRKYYu5xopPTrLJsn4ld7pNyAhpZW",
*            "size": 2952
*          }
*        },
*        {
*          "partId": "4",
*          "mimeType": "application/x-zip-compressed",
*          "filename": "helloWorld.zip",
*          "headers": [
*            {
*              "name": "Content-Type",
*              "value": "application/x-zip-compressed; name=helloWorld.zip"
*            },
*            {
*              "name": "Content-Transfer-Encoding",
*              "value": "base64"
*            },
*            {
*              "name": "Content-Disposition",
*              "value": "attachment; filename=helloWorld.zip"
*            }
*          ],
*          "body": {
*            "attachmentId": "ANGjdJ9nWglkRNneBVGFk5GwSg83COa0zBeiTAvoMYniPklY03-w93dmEVHJTB9CAu5WMFW_yhV4ou2oX2w9SlpZjjyTgSc7sfYWeuX3pt29z67agy9WUVYeNGpo_30LSPgeyNk_Nm0DTAaektJTEMSy65rjRyK03VkHahNpMLY6Kd_pdfrk50oceuXzwNJZ-V-bftmIluueoQMqLcWQSGBRvEdIcl6EcPFFw8KuMLrjZZJwq8_bb8uM6zUvV23Q9LsLTgWg8FaBWejBf0wuIFXl3ZhtSLa-Y8OXCApHPdUnn45hccAzaQEmy4ZG7cgvCdN_jA9eFX46HYHty7ewleKPFGLTVof2JWsMiIi9BPqfohqQ5FPm1WXlGG_bOHvaMdoWcoqbKMMvF8lWZsfz",
*            "size": 174
*          }
*        }
*      ]
*    },
*    "sizeEstimate": 152847
*  }

loJson1 = CreateObject('Chilkat.JsonObject')

lcId = loJson.StringOf("id")
lcThreadId = loJson.StringOf("threadId")
lcSnippet = loJson.StringOf("snippet")
lcHistoryId = loJson.StringOf("historyId")
lcInternalDate = loJson.StringOf("internalDate")
lcPayloadPartId = loJson.StringOf("payload.partId")
lcPayloadMimeType = loJson.StringOf("payload.mimeType")
lcPayloadFilename = loJson.StringOf("payload.filename")
lnPayloadBodySize = loJson.IntOf("payload.body.size")
lnSizeEstimate = loJson.IntOf("sizeEstimate")
i = 0
lnCount_i = loJson.SizeOfArray("labelIds")
DO WHILE i < lnCount_i
    loJson.I = i
    lcStrVal = loJson.StringOf("labelIds[i]")
    i = i + 1
ENDDO
i = 0
lnCount_i = loJson.SizeOfArray("payload.headers")
DO WHILE i < lnCount_i
    loJson.I = i
    lcName = loJson.StringOf("payload.headers[i].name")
    lcValue = loJson.StringOf("payload.headers[i].value")
    i = i + 1
ENDDO
i = 0
lnCount_i = loJson.SizeOfArray("payload.parts")
DO WHILE i < lnCount_i
    loJson.I = i
    lcPartId = loJson.StringOf("payload.parts[i].partId")
    lcMimeType = loJson.StringOf("payload.parts[i].mimeType")
    lcFilename = loJson.StringOf("payload.parts[i].filename")
    lnBodySize = loJson.IntOf("payload.parts[i].body.size")
    lcBodyAttachmentId = loJson.StringOf("payload.parts[i].body.attachmentId")
    j = 0
    lnCount_j = loJson.SizeOfArray("payload.parts[i].headers")
    DO WHILE j < lnCount_j
        loJson.J = j
        lcName = loJson.StringOf("payload.parts[i].headers[j].name")
        lcValue = loJson.StringOf("payload.parts[i].headers[j].value")
        j = j + 1
    ENDDO
    j = 0
    lnCount_j = loJson.SizeOfArray("payload.parts[i].parts")
    DO WHILE j < lnCount_j
        loJson.J = j
        lcPartId = loJson.StringOf("payload.parts[i].parts[j].partId")
        lcMimeType = loJson.StringOf("payload.parts[i].parts[j].mimeType")
        lcFilename = loJson.StringOf("payload.parts[i].parts[j].filename")
        lnBodySize = loJson.IntOf("payload.parts[i].parts[j].body.size")
        lcBodyData = loJson.StringOf("payload.parts[i].parts[j].body.data")
        k = 0
        lnCount_k = loJson.SizeOfArray("payload.parts[i].parts[j].headers")
        DO WHILE k < lnCount_k
            loJson.K = k
            lcName = loJson.StringOf("payload.parts[i].parts[j].headers[k].name")
            lcValue = loJson.StringOf("payload.parts[i].parts[j].headers[k].value")
            k = k + 1
        ENDDO
        k = 0
        lnCount_k = loJson.SizeOfArray("payload.parts[i].parts[j].parts")
        DO WHILE k < lnCount_k
            loJson.K = k
            lcPartId = loJson.StringOf("payload.parts[i].parts[j].parts[k].partId")
            lcMimeType = loJson.StringOf("payload.parts[i].parts[j].parts[k].mimeType")
            lcFilename = loJson.StringOf("payload.parts[i].parts[j].parts[k].filename")
            lnBodySize = loJson.IntOf("payload.parts[i].parts[j].parts[k].body.size")
            lcBodyData = loJson.StringOf("payload.parts[i].parts[j].parts[k].body.data")
            lcBodyAttachmentId = loJson.StringOf("payload.parts[i].parts[j].parts[k].body.attachmentId")
            loJson.ObjectOf2("payload.parts[i].parts[j].parts[k]",loJson1)

            lnI1 = 0
            lnCount_i1 = loJson1.SizeOfArray("headers")
            DO WHILE lnI1 < lnCount_i1
                loJson1.I = lnI1
                lcName = loJson1.StringOf("headers[i].name")
                lcValue = loJson1.StringOf("headers[i].value")
                lnI1 = lnI1 + 1
            ENDDO
            k = k + 1
        ENDDO
        j = j + 1
    ENDDO
    i = i + 1
ENDDO

RELEASE loHttp
RELEASE loResp
RELEASE loJson
RELEASE loJson1