Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi ActiveX) Get GMail Message format=fullExamines the JSON returned when getting a message using format=full. For more information, see https://developers.google.com/gmail/api/v1/reference/users/messages/get
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var http: TChilkatHttp; id: WideString; resp: IChilkatHttpResponse; json: TChilkatJsonObject; strVal: WideString; name: WideString; value: WideString; partId: WideString; mimeType: WideString; filename: WideString; bodySize: Integer; bodyAttachmentId: WideString; j: Integer; count_j: Integer; bodyData: WideString; k: Integer; count_k: Integer; json1: IChilkatJsonObject; i1: Integer; count_i1: Integer; id: WideString; threadId: WideString; snippet: WideString; historyId: WideString; internalDate: WideString; payloadPartId: WideString; payloadMimeType: WideString; payloadFilename: WideString; payloadBodySize: Integer; sizeEstimate: Integer; i: Integer; count_i: Integer; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http := TChilkatHttp.Create(Self); http.AuthToken := 'ACCESS_TOKEN'; http.Accept := 'application/json'; // This is the ID for a particular message in our mailbox... id := '1712bc1dc22da2a2'; // Download the message using format=full http.SetUrlVar('id',id); resp := http.QuickRequest('GET','https://www.googleapis.com/gmail/v1/users/userId/messages/{$id}?format=full'); if (http.LastMethodSuccess <> 1) then begin Memo1.Lines.Add(http.LastErrorText); Exit; end; Memo1.Lines.Add('Response Status Code: ' + IntToStr(resp.StatusCode)); json := TChilkatJsonObject.Create(Self); json.Load(resp.BodyStr); json.EmitCompact := 0; Memo1.Lines.Add(json.Emit()); if (resp.StatusCode <> 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 // } 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 do begin json.I := i; strVal := json.StringOf('labelIds[i]'); i := i + 1; end; i := 0; count_i := json.SizeOfArray('payload.headers'); while i < count_i do begin json.I := i; name := json.StringOf('payload.headers[i].name'); value := json.StringOf('payload.headers[i].value'); i := i + 1; end; i := 0; count_i := json.SizeOfArray('payload.parts'); while i < count_i do begin 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 do begin json.J := j; name := json.StringOf('payload.parts[i].headers[j].name'); value := json.StringOf('payload.parts[i].headers[j].value'); j := j + 1; end; j := 0; count_j := json.SizeOfArray('payload.parts[i].parts'); while j < count_j do begin 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'); bodyData := json.StringOf('payload.parts[i].parts[j].body.data'); k := 0; count_k := json.SizeOfArray('payload.parts[i].parts[j].headers'); while k < count_k do begin 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; end; k := 0; count_k := json.SizeOfArray('payload.parts[i].parts[j].parts'); while k < count_k do begin 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'); bodyAttachmentId := json.StringOf('payload.parts[i].parts[j].parts[k].body.attachmentId'); json1 := json.ObjectOf('payload.parts[i].parts[j].parts[k]'); i1 := 0; count_i1 := json1.SizeOfArray('headers'); while i1 < count_i1 do begin json1.I := i1; name := json1.StringOf('headers[i].name'); value := json1.StringOf('headers[i].value'); i1 := i1 + 1; end; k := k + 1; end; j := j + 1; end; i := i + 1; end; end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.