PureBasic
PureBasic
Send Encrypted Email to Multiple Recipients
Demonstrates how to create and send an S/MIME encrypted email to multiple recipients. The digital certificate of each recipient is required. The encrypting/sending process uses each recipient's digital certificate (which internally contains the public key). Each recipient decrypts the received email using his/her private key.Chilkat PureBasic Downloads
IncludeFile "CkCert.pb"
IncludeFile "CkEmail.pb"
IncludeFile "CkMailMan.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; The mailman object is used for sending and receiving email.
mailman.i = CkMailMan::ckCreate()
If mailman.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Set the SMTP server.
CkMailMan::setCkSmtpHost(mailman, "smtp.mymailserver.com")
; Load each recipient's certificate into a Chilkat certificate object.
; This example loads the certificates from files. However, the Chilkat
; certificate object provides other means for loading certificates,
; such as from in-memory PEM strings, or in-memory binary DER encoded form, etc.
cert1.i = CkCert::ckCreate()
If cert1.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadFromFile(cert1,"recipient1.cer")
If success <> 1
Debug CkCert::ckLastErrorText(cert1)
CkMailMan::ckDispose(mailman)
CkCert::ckDispose(cert1)
ProcedureReturn
EndIf
cert2.i = CkCert::ckCreate()
If cert2.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadFromFile(cert2,"recipient2.cer")
If success <> 1
Debug CkCert::ckLastErrorText(cert2)
CkMailMan::ckDispose(mailman)
CkCert::ckDispose(cert1)
CkCert::ckDispose(cert2)
ProcedureReturn
EndIf
cert3.i = CkCert::ckCreate()
If cert3.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadFromFile(cert3,"recipient3.cer")
If success <> 1
Debug CkCert::ckLastErrorText(cert3)
CkMailMan::ckDispose(mailman)
CkCert::ckDispose(cert1)
CkCert::ckDispose(cert2)
CkCert::ckDispose(cert3)
ProcedureReturn
EndIf
; Create a new email object
email.i = CkEmail::ckCreate()
If email.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkEmail::setCkSubject(email, "This email is encrypted and sent to 3 recipients")
CkEmail::setCkBody(email, "This is an S/MIME encrypted mail sent to 3 recipients")
CkEmail::setCkFrom(email, "Chilkat Support <support@chilkatsoft.com>")
; Make each of the certificates available for encrypting the email
; by calling AddEncryptCert for each.
success = CkEmail::ckAddEncryptCert(email,cert1)
If success = 1
success = CkEmail::ckAddEncryptCert(email,cert2)
EndIf
If success = 1
success = CkEmail::ckAddEncryptCert(email,cert3)
EndIf
If success <> 1
Debug CkEmail::ckLastErrorText(email)
CkMailMan::ckDispose(mailman)
CkCert::ckDispose(cert1)
CkCert::ckDispose(cert2)
CkCert::ckDispose(cert3)
CkEmail::ckDispose(email)
ProcedureReturn
EndIf
; Add 3 recipients to the email (2 TO addresses, and 1 CC address)
success = CkEmail::ckAddTo(email,"Recipient 1","admin@cknotes.com")
success = CkEmail::ckAddTo(email,"Recipient 2","somebody001122@yahoo.com")
success = CkEmail::ckAddCC(email,"Recipient 3","somebody123xyz@gmail.com")
; Indicate that the email is to be sent encrypted.
CkEmail::setCkSendEncrypted(email, 1)
; Send the encrypted email...
success = CkMailMan::ckSendEmail(mailman,email)
If success <> 1
Debug CkMailMan::ckLastErrorText(mailman)
Else
Debug "Encrypted Email Sent!"
EndIf
CkMailMan::ckDispose(mailman)
CkCert::ckDispose(cert1)
CkCert::ckDispose(cert2)
CkCert::ckDispose(cert3)
CkEmail::ckDispose(email)
ProcedureReturn
EndProcedure