Sample code for 30+ languages & platforms
DataFlex

Sending S/MIME Encrypted Email

Sends an encrypted email using the recipient's digital certificate from a .cer file.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMailman
    Variant vCert
    Handle hoCert
    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.comcast.net"

    // Load the .cer file into a certificate object.
    // When sending S/MIME encrypted email, it is the recipient's
    // certificate that is used for encryption.  Only the public key
    // is needed to encrypt.  The recipient is the only
    // one possessing the private key, and therefore is the only
    // one able to decrypt.
    Get Create (RefClass(cComChilkatCert)) To hoCert
    If (Not(IsComObjectCreated(hoCert))) Begin
        Send CreateComObject of hoCert
    End
    Get ComLoadFromFile Of hoCert "cknotes.cer" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoCert 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"
    Set ComBody Of hoEmail To "This is a digitally encrypted mail"
    Set ComFrom Of hoEmail To "Chilkat Support <support@chilkatsoft.com>"
    Get ComAddTo Of hoEmail "Chilkat Blog" "admin@cknotes.com" To iSuccess

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

    // Specify the certificate to be used for encryption.
    Get pvComObject of hoCert to vCert
    Get ComSetEncryptCert Of hoEmail vCert To iSuccess

    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 "Mail Sent!"
    End



End_Procedure