Tcl
Tcl
SendGrid HTML Email with Embedded Images
See more SendGrid Examples
Demonstrates how to send an HTML email with embedded images using SendGrid.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code
set req [new_CkHttpRequest]
set http [new_CkHttp]
# First.. load a JPG file and build an HTML img tag with the JPG data inline encoded.
# Our HTML img tag will look like this:
# <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA3ADcAA..." alt="" style="border-width:0px;" />
set bdJpg [new_CkBinData]
set success [CkBinData_LoadFile $bdJpg "qa_data/jpg/starfish.jpg"]
if {$success == 0} then {
puts "Failed to load JPG file."
delete_CkHttpRequest $req
delete_CkHttp $http
delete_CkBinData $bdJpg
exit
}
# Note: HTML containing embedded base64 image data may not be visible in all email clients.
# For example, GMail might not display the image, but viewing in Outlook might be OK.
set sbHtml [new_CkStringBuilder]
CkStringBuilder_Append $sbHtml "<html><body><b>This is a test<b><br /><img src=\"data:image/jpeg;base64,"
# Append the base64 image data to sbHtml.
CkBinData_GetEncodedSb $bdJpg "base64" $sbHtml
CkStringBuilder_Append $sbHtml "\" alt=\"\" style=\"border-width:0px;\" /></body></html>"
set json [new_CkJsonObject]
CkJsonObject_UpdateString $json "personalizations[0].to[0].email" "matt@chilkat.io"
CkJsonObject_UpdateString $json "personalizations[0].to[0].name" "Matt"
CkJsonObject_UpdateString $json "from.email" "admin@chilkatsoft.com"
CkJsonObject_UpdateString $json "subject" "Test HTML email with images"
CkJsonObject_UpdateString $json "content[0].type" "text/html"
CkJsonObject_UpdateSb $json "content[0].value" $sbHtml
CkHttp_put_AuthToken $http "SENDGRID_API_KEY"
set resp [new_CkHttpResponse]
set success [CkHttp_HttpJson $http "POST" "https://api.sendgrid.com/v3/mail/send" $json "application/json" $resp]
if {$success == 0} then {
puts [CkHttp_lastErrorText $http]
delete_CkHttpRequest $req
delete_CkHttp $http
delete_CkBinData $bdJpg
delete_CkStringBuilder $sbHtml
delete_CkJsonObject $json
delete_CkHttpResponse $resp
exit
}
puts "response status code: [CkHttpResponse_get_StatusCode $resp]"
# Display the response.
# If successful, the response code is 202 and the response body string is empty.
# (The response body string may also be empty for error response codes.)
puts [CkHttpResponse_bodyStr $resp]
delete_CkHttpRequest $req
delete_CkHttp $http
delete_CkBinData $bdJpg
delete_CkStringBuilder $sbHtml
delete_CkJsonObject $json
delete_CkHttpResponse $resp