Sample code for 30+ languages & platforms
Xbase++

Download a Specific GMail Message into a Chilkat Email Object

See more GMail REST API Examples

Demonstrates how to download a GMail message into a Chilkat Email object.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL cId
LOCAL cUserId
LOCAL cUrl
LOCAL oSbJson
LOCAL oJson
LOCAL oSbRaw
LOCAL oEmail

nSuccess := 0

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

oHttp := CreateObject("Chilkat.Http")
oHttp:AuthToken := "GMAIL-ACCESS-TOKEN"

//  The id of the GMail message to download.
cId := "166e50fed0b9b0cb"
cUserId := "me"

oHttp:SetUrlVar("userId", "me")
oHttp:SetUrlVar("id", cId)

//  Fetch the email.
cUrl := "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/{$id}?format=raw"
oSbJson := CreateObject("Chilkat.StringBuilder")
nSuccess := oHttp:DownloadSb(cUrl, "utf-8", oSbJson)
IF (nSuccess != 1)
    ? oHttp:LastErrorText
    oHttp:destroy()
    oSbJson:destroy()
    RETURN
ENDIF

oJson := CreateObject("Chilkat.JsonObject")
oJson:LoadSb(oSbJson)
oJson:EmitCompact := 0

IF (oHttp:LastStatus != 200)
    ? oJson:Emit()
    ? "Failed."
    oHttp:destroy()
    oSbJson:destroy()
    oJson:destroy()
    RETURN
ENDIF

//  The returned JSON contains something like this:

//  {
//    "id": "166e50fed0b9b0cb",
//    "threadId": "166e50fed0b9b0cb",
//    "labelIds": [
//      "CATEGORY_SOCIAL",
//      "INBOX"
//    ],
//    "snippet": "...",
//    "historyId": "582477",
//    "internalDate": "1541441317000",
//    "sizeEstimate": 28603,
//    "raw": "BASE64URL_CONTENT"
//  }

//  The RFC822 MIME of the email is contained in the "raw" as a base64URL encoded string.
//  Let's decode and load into a Chilkat email object..
oSbRaw := CreateObject("Chilkat.StringBuilder")
oJson:StringOfSb("raw", oSbRaw)
oSbRaw:Decode("base64url", "utf-8")

oEmail := CreateObject("Chilkat.Email")
oEmail:SetFromMimeSb(oSbRaw)

//  Now we can use the email API to do whatever we desire..
? "From: " + oEmail:FromAddress
? "Subject: " + oEmail:Subject
//  ...

oHttp:destroy()
oSbJson:destroy()
oJson:destroy()
oSbRaw:destroy()
oEmail:destroy()