Tcl
Tcl
S/MIME Encrypt .eml without Sending
See more Email Object Examples
Demonstrates how to encrypt an email using the recipient's digital certificate. This example just encrypts, and does not send the email.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 email [new_CkEmail]
set success [CkEmail_LoadEml $email "c:/temp/email/unencrypted.eml"]
if {$success == 0} then {
puts [CkEmail_lastErrorText $email]
delete_CkEmail $email
exit
}
# The email content is encrypted using AES with a 256-bit key, operating in GCM mode, which provides authenticated encryption.
CkEmail_put_Pkcs7CryptAlg $email "aes-gcm"
CkEmail_put_Pkcs7KeyLength $email 256
CkEmail_put_OaepPadding $email 1
CkEmail_put_OaepHash $email "sha256"
CkEmail_put_OaepMgfHash $email "sha256"
set cert [new_CkCert]
set success [CkCert_LoadFromFile $cert "c/temps/cert/recipient.cer"]
if {$success == 0} then {
puts [CkCert_lastErrorText $cert]
delete_CkEmail $email
delete_CkCert $cert
exit
}
CkEmail_put_SendEncrypted $email 1
CkEmail_SetEncryptCert $email $cert
set sbSmime [new_CkStringBuilder]
# The mailman object applies the encryption by rendering the email according to the instructions (property settings) provided in the email object.
# No email is sent.
set mailman [new_CkMailMan]
set success [CkMailMan_RenderToMimeSb $mailman $email $sbSmime]
if {$success == 0} then {
puts [CkMailMan_lastErrorText $mailman]
delete_CkEmail $email
delete_CkCert $cert
delete_CkStringBuilder $sbSmime
delete_CkMailMan $mailman
exit
}
set success [CkStringBuilder_WriteFile $sbSmime "c:/temp/encryptedEmail.eml" "utf-8" 0]
if {$success == 0} then {
puts [CkMailMan_lastErrorText $mailman]
delete_CkEmail $email
delete_CkCert $cert
delete_CkStringBuilder $sbSmime
delete_CkMailMan $mailman
exit
}
puts "Success!"
delete_CkEmail $email
delete_CkCert $cert
delete_CkStringBuilder $sbSmime
delete_CkMailMan $mailman