Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMailman
    Variant vCert1
    Handle hoCert1
    Variant vCert2
    Handle hoCert2
    Variant vCert3
    Handle hoCert3
    Variant vEmail
    Handle hoEmail
    String sTemp1

    Move False To iSuccess

    // 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.
    Get Create (RefClass(cComChilkatMailMan)) To hoMailman
    If (Not(IsComObjectCreated(hoMailman))) Begin
        Send CreateComObject of hoMailman
    End

    // Set the SMTP server.
    Set ComSmtpHost Of hoMailman To "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.
    Get Create (RefClass(cComChilkatCert)) To hoCert1
    If (Not(IsComObjectCreated(hoCert1))) Begin
        Send CreateComObject of hoCert1
    End
    Get ComLoadFromFile Of hoCert1 "recipient1.cer" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoCert1 To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatCert)) To hoCert2
    If (Not(IsComObjectCreated(hoCert2))) Begin
        Send CreateComObject of hoCert2
    End
    Get ComLoadFromFile Of hoCert2 "recipient2.cer" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoCert2 To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatCert)) To hoCert3
    If (Not(IsComObjectCreated(hoCert3))) Begin
        Send CreateComObject of hoCert3
    End
    Get ComLoadFromFile Of hoCert3 "recipient3.cer" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoCert3 To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Create a new email object
    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End

    Set ComSubject Of hoEmail To "This email is encrypted and sent to 3 recipients"
    Set ComBody Of hoEmail To "This is an S/MIME encrypted mail sent to 3 recipients"
    Set ComFrom Of hoEmail To "Chilkat Support <support@chilkatsoft.com>"

    // Make each of the certificates available for encrypting the email
    // by calling AddEncryptCert for each.
    Get pvComObject of hoCert1 to vCert1
    Get ComAddEncryptCert Of hoEmail vCert1 To iSuccess
    If (iSuccess = True) Begin
        Get pvComObject of hoCert2 to vCert2
        Get ComAddEncryptCert Of hoEmail vCert2 To iSuccess
    End

    If (iSuccess = True) Begin
        Get pvComObject of hoCert3 to vCert3
        Get ComAddEncryptCert Of hoEmail vCert3 To iSuccess
    End

    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoEmail To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Add 3 recipients to the email (2 TO addresses, and 1 CC address)
    Get ComAddTo Of hoEmail "Recipient 1" "admin@cknotes.com" To iSuccess
    Get ComAddTo Of hoEmail "Recipient 2" "somebody001122@yahoo.com" To iSuccess
    Get ComAddCC Of hoEmail "Recipient 3" "somebody123xyz@gmail.com" To iSuccess

    // Indicate that the email is to be sent encrypted.
    Set ComSendEncrypted Of hoEmail To True

    // Send the encrypted email...
    Get pvComObject of hoEmail to vEmail
    Get ComSendEmail Of hoMailman vEmail To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoMailman To sTemp1
        Showln sTemp1
    End
    Else Begin
        Showln "Encrypted Email Sent!"
    End



End_Procedure