Sample code for 30+ languages & platforms
DataFlex

Send Signed Email using PFX File

Demonstrates how to send a signed email using a digital certificate w/ private key stored in a PFX file.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMailman
    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"

    // 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 signed"
    Set ComBody Of hoEmail To "This is a digitally signed mail"
    Set ComFrom Of hoEmail To "Chilkat Admin <admin@chilkatsoft.com>"
    Get ComAddTo Of hoEmail "Chilkat Support" "support@chilkatsoft.com" To iSuccess

    // Indicate that the email should be sent signed.
    Set ComSendSigned Of hoEmail To True

    // Tell the mailman to use a PFX file as a source for locating
    // the certificate and private key required for signing.
    // The certificate chosen for signing will be the one that
    // matches the sender's email address, which also has
    // a private key.  All intermediate certs in the chain of 
    // authentication, up to and including the root, will
    // be included in the signature.
    Get ComAddPfxSourceFile Of hoMailman "/pfx_files/chilkatsoft_secret.pfx" "secret" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoMailman To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Signed email can be sent in two different ways.  
    // In a multipart/signed email, the signature is attached as a separate MIME part.
    // In an opaque email (signedData) the content of the email is encapsulated within the signature
    // and the email is sent as "application/pkcs7-mime". 
    // Either should be fine, but some receiving systems might require one or the other..
    Set ComOpaqueSigning Of hoMailman To False

    // Send a signed 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
        // The LastErrorText property provides information
        // even when successful.
        Get ComLastErrorText Of hoMailman To sTemp1
        Showln sTemp1
        Showln "Mail Sent!"
    End



End_Procedure