Tcl
Tcl
Add a Related Item from a BinData Object
See more Email Object Examples
Demonstrates the Chilkat Email.AddRelatedBd method, which adds a related item (such as an inline image) using the contents of a BinData object, and returns the generated Content-ID. This example loads an image into a BinData, adds it, captures the Content-ID, and references it from the HTML body.
Background: This is the binary,
Content-ID-based way to embed an inline resource — the right choice for images, whose bytes belong in a BinData rather than a string. Because Chilkat generates the Content-ID, the usual pattern is: add the item first, capture the returned ID, then build the matching <img src="cid:..."> reference from it (done here with a StringBuilder).Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# Demonstrates the AddRelatedBd method, which adds a related item (such as an inline image)
# using the contents of a BinData object, and returns the generated Content-ID.
set email [new_CkEmail]
CkEmail_put_Subject $email "Related image from BinData"
# Load the image data from a file into a BinData object.
set bdImage [new_CkBinData]
set success [CkBinData_LoadFile $bdImage "qa_data/images/logo.png"]
if {$success == 0} then {
puts [CkBinData_lastErrorText $bdImage]
delete_CkEmail $email
delete_CkBinData $bdImage
exit
}
# Add the image as a related item; capture its generated Content-ID.
set cid [CkEmail_addRelatedBd $email "logo.png" $bdImage]
if {[CkEmail_get_LastMethodSuccess $email] == 0} then {
puts [CkEmail_lastErrorText $email]
delete_CkEmail $email
delete_CkBinData $bdImage
exit
}
# Reference the related item in the HTML body by its Content-ID.
set sbHtml [new_CkStringBuilder]
CkStringBuilder_Append $sbHtml "<html><body><img src=\"cid:PLACEHOLDER_CID\"/></body></html>"
set numReplaced [CkStringBuilder_Replace $sbHtml "PLACEHOLDER_CID" $cid]
CkEmail_SetHtmlBody $email [CkStringBuilder_getAsString $sbHtml]
puts "NumRelatedItems = [CkEmail_get_NumRelatedItems $email]"
# Note: The path "qa_data/images/logo.png" is a relative local filesystem path,
# relative to the current working directory of the running application.
delete_CkEmail $email
delete_CkBinData $bdImage
delete_CkStringBuilder $sbHtml