Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set http [new_CkHttp]

CkHttp_put_AuthToken $http "GMAIL-ACCESS-TOKEN"

# The id of the GMail message to download.
set id "166e50fed0b9b0cb"
set userId "me"

CkHttp_SetUrlVar $http "userId" "me"
CkHttp_SetUrlVar $http "id" $id

# Fetch the email.
set url "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/{$id}?format=raw"
set sbJson [new_CkStringBuilder]

set success [CkHttp_DownloadSb $http $url "utf-8" $sbJson]
if {$success != 1} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkStringBuilder $sbJson
    exit
}

set json [new_CkJsonObject]

CkJsonObject_LoadSb $json $sbJson
CkJsonObject_put_EmitCompact $json 0

if {[CkHttp_get_LastStatus $http] != 200} then {
    puts [CkJsonObject_emit $json]
    puts "Failed."
    delete_CkHttp $http
    delete_CkStringBuilder $sbJson
    delete_CkJsonObject $json
    exit
}

# 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..
set sbRaw [new_CkStringBuilder]

CkJsonObject_StringOfSb $json "raw" $sbRaw
CkStringBuilder_Decode $sbRaw "base64url" "utf-8"

set email [new_CkEmail]

CkEmail_SetFromMimeSb $email $sbRaw

# Now we can use the email API to do whatever we desire..
puts "From: [CkEmail_fromAddress $email]"
puts "Subject: [CkEmail_subject $email]"
# ...

delete_CkHttp $http
delete_CkStringBuilder $sbJson
delete_CkJsonObject $json
delete_CkStringBuilder $sbRaw
delete_CkEmail $email