Sample code for 30+ languages & platforms
Delphi DLL 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 Delphi DLL Downloads

Delphi DLL
var
success: Boolean;
http: HCkHttp;
id: PWideChar;
resp: HCkHttpResponse;
json: HCkJsonObject;
strVal: PWideChar;
name: PWideChar;
value: PWideChar;
partId: PWideChar;
mimeType: PWideChar;
filename: PWideChar;
bodySize: Integer;
bodyAttachmentId: PWideChar;
j: Integer;
count_j: Integer;
bodyData: PWideChar;
k: Integer;
count_k: Integer;
json1: HCkJsonObject;
i1: Integer;
count_i1: Integer;
id: PWideChar;
threadId: PWideChar;
snippet: PWideChar;
historyId: PWideChar;
internalDate: PWideChar;
payloadPartId: PWideChar;
payloadMimeType: PWideChar;
payloadFilename: PWideChar;
payloadBodySize: Integer;
sizeEstimate: Integer;
i: Integer;
count_i: Integer;

begin
success := False;

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

http := CkHttp_Create();

CkHttp_putAuthToken(http,'ACCESS_TOKEN');

CkHttp_putAccept(http,'application/json');

//  This is the ID for a particular message in our mailbox...
id := '1712bc1dc22da2a2';

//  Download the message using format=full
CkHttp_SetUrlVar(http,'id',id);

resp := CkHttpResponse_Create();
success := CkHttp_HttpNoBody(http,'GET','https://www.googleapis.com/gmail/v1/users/userId/messages/{$id}?format=full',resp);
if (success = False) then
  begin
    Memo1.Lines.Add(CkHttp__lastErrorText(http));
    Exit;
  end;

Memo1.Lines.Add('Response Status Code: ' + IntToStr(CkHttpResponse_getStatusCode(resp)));

json := CkJsonObject_Create();
CkJsonObject_Load(json,CkHttpResponse__bodyStr(resp));
CkJsonObject_putEmitCompact(json,False);
Memo1.Lines.Add(CkJsonObject__emit(json));

if (CkHttpResponse_getStatusCode(resp) <> 200) then
  begin
    Memo1.Lines.Add('Failed.');
    Exit;
  end;

//  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
//  }

json1 := CkJsonObject_Create();

id := CkJsonObject__stringOf(json,'id');
threadId := CkJsonObject__stringOf(json,'threadId');
snippet := CkJsonObject__stringOf(json,'snippet');
historyId := CkJsonObject__stringOf(json,'historyId');
internalDate := CkJsonObject__stringOf(json,'internalDate');
payloadPartId := CkJsonObject__stringOf(json,'payload.partId');
payloadMimeType := CkJsonObject__stringOf(json,'payload.mimeType');
payloadFilename := CkJsonObject__stringOf(json,'payload.filename');
payloadBodySize := CkJsonObject_IntOf(json,'payload.body.size');
sizeEstimate := CkJsonObject_IntOf(json,'sizeEstimate');
i := 0;
count_i := CkJsonObject_SizeOfArray(json,'labelIds');
while i < count_i do
  begin
    CkJsonObject_putI(json,i);
    strVal := CkJsonObject__stringOf(json,'labelIds[i]');
    i := i + 1;
  end;

i := 0;
count_i := CkJsonObject_SizeOfArray(json,'payload.headers');
while i < count_i do
  begin
    CkJsonObject_putI(json,i);
    name := CkJsonObject__stringOf(json,'payload.headers[i].name');
    value := CkJsonObject__stringOf(json,'payload.headers[i].value');
    i := i + 1;
  end;

i := 0;
count_i := CkJsonObject_SizeOfArray(json,'payload.parts');
while i < count_i do
  begin
    CkJsonObject_putI(json,i);
    partId := CkJsonObject__stringOf(json,'payload.parts[i].partId');
    mimeType := CkJsonObject__stringOf(json,'payload.parts[i].mimeType');
    filename := CkJsonObject__stringOf(json,'payload.parts[i].filename');
    bodySize := CkJsonObject_IntOf(json,'payload.parts[i].body.size');
    bodyAttachmentId := CkJsonObject__stringOf(json,'payload.parts[i].body.attachmentId');
    j := 0;
    count_j := CkJsonObject_SizeOfArray(json,'payload.parts[i].headers');
    while j < count_j do
      begin
        CkJsonObject_putJ(json,j);
        name := CkJsonObject__stringOf(json,'payload.parts[i].headers[j].name');
        value := CkJsonObject__stringOf(json,'payload.parts[i].headers[j].value');
        j := j + 1;
      end;

    j := 0;
    count_j := CkJsonObject_SizeOfArray(json,'payload.parts[i].parts');
    while j < count_j do
      begin
        CkJsonObject_putJ(json,j);
        partId := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].partId');
        mimeType := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].mimeType');
        filename := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].filename');
        bodySize := CkJsonObject_IntOf(json,'payload.parts[i].parts[j].body.size');
        bodyData := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].body.data');
        k := 0;
        count_k := CkJsonObject_SizeOfArray(json,'payload.parts[i].parts[j].headers');
        while k < count_k do
          begin
            CkJsonObject_putK(json,k);
            name := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].headers[k].name');
            value := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].headers[k].value');
            k := k + 1;
          end;

        k := 0;
        count_k := CkJsonObject_SizeOfArray(json,'payload.parts[i].parts[j].parts');
        while k < count_k do
          begin
            CkJsonObject_putK(json,k);
            partId := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].parts[k].partId');
            mimeType := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].parts[k].mimeType');
            filename := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].parts[k].filename');
            bodySize := CkJsonObject_IntOf(json,'payload.parts[i].parts[j].parts[k].body.size');
            bodyData := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].parts[k].body.data');
            bodyAttachmentId := CkJsonObject__stringOf(json,'payload.parts[i].parts[j].parts[k].body.attachmentId');
            CkJsonObject_ObjectOf2(json,'payload.parts[i].parts[j].parts[k]',json1);

            i1 := 0;
            count_i1 := CkJsonObject_SizeOfArray(json1,'headers');
            while i1 < count_i1 do
              begin
                CkJsonObject_putI(json1,i1);
                name := CkJsonObject__stringOf(json1,'headers[i].name');
                value := CkJsonObject__stringOf(json1,'headers[i].value');
                i1 := i1 + 1;
              end;

            k := k + 1;
          end;

        j := j + 1;
      end;

    i := i + 1;
  end;

CkHttp_Dispose(http);
CkHttpResponse_Dispose(resp);
CkJsonObject_Dispose(json);
CkJsonObject_Dispose(json1);