Sample code for 30+ languages & platforms
Tcl

Send HTML Email with Attachments

See more SMTP Examples

Demonstrates how to send an HTML email with file attachments.

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 mailman [new_CkMailMan]

CkMailMan_put_SmtpHost $mailman "smtp.my-starttls-mail-server.com"

CkMailMan_put_SmtpUsername $mailman "MY-SMTP-USERNAME"
CkMailMan_put_SmtpPassword $mailman "MY-SMTP-PASSWORD"

CkMailMan_put_StartTLS $mailman 1
CkMailMan_put_SmtpPort $mailman 587

# Create a new email object
set email [new_CkEmail]

CkEmail_put_Subject $email "Test SMTP API to Send HTML Email with Attachments"
CkEmail_put_From $email "Joe Programmer <joe@my-starttls-mail-server.com>"
CkEmail_AddTo $email "Chilkat Support" "support@chilkatsoft.com"

# Add a plain-text alternative body, which will likely never be seen.
# (It is shown if the receiving email client is incapable of displaying HTML email.)
CkEmail_AddPlainTextAlternativeBody $email "This is a plain-text alternative body..."

# Our HTML will include an image, so add the related image here.
set contentIdStarfish [CkEmail_addRelatedFile $email "qa_data/jpg/starfish.jpg"]
if {[CkEmail_get_LastMethodSuccess $email] != 1} then {
    puts [CkEmail_lastErrorText $email]
    delete_CkMailMan $mailman
    delete_CkEmail $email
    exit
}

# The src attribute for the image tag is set to the contentIdStarfish:
set sbHtml [new_CkStringBuilder]

CkStringBuilder_Append $sbHtml "<html><body><p>This is an HTML email with an embedded image.</p>"
CkStringBuilder_Append $sbHtml "<p><img src=\"cid:CONTENT_ID_STARFISH\" /></p></body></html>"
set numReplacements [CkStringBuilder_Replace $sbHtml "CONTENT_ID_STARFISH" $contentIdStarfish]

CkEmail_AddHtmlAlternativeBody $email [CkStringBuilder_getAsString $sbHtml]

# Finally, add some attachments to the email.
# Add a file attachment.
set success [CkEmail_AddFileAttachment2 $email "qa_data/pdf/fishing.pdf" "application/pdf"]
if {$success != 1} then {
    puts [CkEmail_lastErrorText $email]
    delete_CkMailMan $mailman
    delete_CkEmail $email
    delete_CkStringBuilder $sbHtml
    exit
}

# Add an attachment where the content is contained in a string.
set content "This is the content of the 2nd attached file."
CkEmail_AddStringAttachment $email "someText.txt" $content

# Send the HTML email.
set success [CkMailMan_SendEmail $mailman $email]
if {$success != 1} then {
    puts [CkMailMan_lastErrorText $mailman]
    delete_CkMailMan $mailman
    delete_CkEmail $email
    delete_CkStringBuilder $sbHtml
    exit
}

set success [CkMailMan_CloseSmtpConnection $mailman]
if {$success != 1} then {
    puts "Connection to SMTP server not closed cleanly."
}

puts "HTML email with attachments sent!"

delete_CkMailMan $mailman
delete_CkEmail $email
delete_CkStringBuilder $sbHtml