Sample code for 30+ languages & platforms
Xbase++

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oMailman
LOCAL oCert1
LOCAL oCert2
LOCAL oCert3
LOCAL oEmail

nSuccess := 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.
oMailman := CreateObject("Chilkat.MailMan")

//  Set the SMTP server.
oMailman:SmtpHost := "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.
oCert1 := CreateObject("Chilkat.Cert")
nSuccess := oCert1:LoadFromFile("recipient1.cer")
IF (nSuccess != 1)
    ? oCert1:LastErrorText
    oMailman:destroy()
    oCert1:destroy()
    RETURN
ENDIF

oCert2 := CreateObject("Chilkat.Cert")
nSuccess := oCert2:LoadFromFile("recipient2.cer")
IF (nSuccess != 1)
    ? oCert2:LastErrorText
    oMailman:destroy()
    oCert1:destroy()
    oCert2:destroy()
    RETURN
ENDIF

oCert3 := CreateObject("Chilkat.Cert")
nSuccess := oCert3:LoadFromFile("recipient3.cer")
IF (nSuccess != 1)
    ? oCert3:LastErrorText
    oMailman:destroy()
    oCert1:destroy()
    oCert2:destroy()
    oCert3:destroy()
    RETURN
ENDIF

//  Create a new email object
oEmail := CreateObject("Chilkat.Email")

oEmail:Subject := "This email is encrypted and sent to 3 recipients"
oEmail:Body := "This is an S/MIME encrypted mail sent to 3 recipients"
oEmail:From := "Chilkat Support <support@chilkatsoft.com>"

//  Make each of the certificates available for encrypting the email
//  by calling AddEncryptCert for each.
nSuccess := oEmail:AddEncryptCert(oCert1)
IF (nSuccess == 1)
    nSuccess := oEmail:AddEncryptCert(oCert2)
ENDIF

IF (nSuccess == 1)
    nSuccess := oEmail:AddEncryptCert(oCert3)
ENDIF

IF (nSuccess != 1)
    ? oEmail:LastErrorText
    oMailman:destroy()
    oCert1:destroy()
    oCert2:destroy()
    oCert3:destroy()
    oEmail:destroy()
    RETURN
ENDIF

//  Add 3 recipients to the email (2 TO addresses, and 1 CC address)
nSuccess := oEmail:AddTo("Recipient 1", "admin@cknotes.com")
nSuccess := oEmail:AddTo("Recipient 2", "somebody001122@yahoo.com")
nSuccess := oEmail:AddCC("Recipient 3", "somebody123xyz@gmail.com")

//  Indicate that the email is to be sent encrypted.
oEmail:SendEncrypted := 1

//  Send the encrypted email...
nSuccess := oMailman:SendEmail(oEmail)
IF (nSuccess != 1)
    ? oMailman:LastErrorText
ELSE
    ? "Encrypted Email Sent!"
ENDIF

oMailman:destroy()
oCert1:destroy()
oCert2:destroy()
oCert3:destroy()
oEmail:destroy()