Sample code for 30+ languages & platforms
DataFlex

Send Signed and Encrypted EDI Email (EDIFACT)

Demonstrates how to send a signed and encrypted EDI email (EDIFACT email).

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMailman
    Variant vEmail
    Handle hoEmail
    String sEdiMsg
    String sName
    String sFilename
    String sCharset
    Variant vCert
    Handle hoCert
    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

    //  Create a new email object

    //  Build the basic EDI email where the body is the EDIFACT message:
    Move "UNB+IATB:1+6XPPC ..." To sEdiMsg
    Move "something" To sName
    Move "something" To sFilename
    Move "iso-8859-1" To sCharset
    Send ComSetEdifactBody To hoEmail sEdiMsg sName sFilename sCharset

    Set ComSubject Of hoEmail To "This is the subject"
    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/myCertAndPrivateKey.pfx" "secret" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoMailman To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  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 ComLoadFromFile Of hoCert "/certs/recipientCert.cer" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoCert To sTemp1
        Showln sTemp1
        Procedure_Return
    End

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

    //  Indicate that we want 192-bit 3DES encryption:
    Set ComPkcs7CryptAlg Of hoEmail To "3des"
    Set ComPkcs7KeyLength Of hoEmail To 192

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

    //  Tell the mailman to use an opaque signature (as opposed to a detached signature)
    Set ComOpaqueSigning Of hoMailman To True

    //  SMTP server (use your settings and refer to the online
    //  reference  documentation for more options)
    Set ComSmtpHost Of hoMailman To "smtp.mymailserver.com"
    Set ComSmtpUsername Of hoMailman To "myLogin"
    Set ComSmtpPassword Of hoMailman To "myPassword"
    Set ComSmtpPort Of hoMailman To 587
    Set ComStartTLS Of hoMailman To True

    //  Send the signed/encrypted EDI email
    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