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