Sample code for 30+ languages & platforms
Go

Send Signed and Encrypted EDI Email (EDIFACT)

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

Chilkat Go Downloads

Go
    success := false

    // 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.
    mailman := chilkat.NewMailMan()

    //  Create a new email object
    // email is a Email

    //  Build the basic EDI email where the body is the EDIFACT message:
    ediMsg := "UNB+IATB:1+6XPPC ..."
    name := "something"
file    name := "something"
    charset := "iso-8859-1"
    email.SetEdifactBody(ediMsg,name,filefilename,charset)

    email.SetSubject("This is the subject")
    email.SetFrom("Chilkat Admin <admin@chilkatsoft.com>")
    success = email.AddTo("Chilkat Support","support@chilkatsoft.com")

    //  Indicate that the email should be sent signed.
    email.SetSendSigned(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.
    success = mailman.AddPfxSourceFile("/pfx_files/myCertAndPrivateKey.pfx","secret")
    if success != true {
        fmt.Println(mailman.LastErrorText())
        mailman.DisposeMailMan()
        return
    }

    //  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.
    // cert is a Cert
    success = cert.LoadFromFile("/certs/recipientCert.cer")
    if success != true {
        fmt.Println(cert.LastErrorText())
        mailman.DisposeMailMan()
        return
    }

    //  Indicate that the email is to be sent encrypted.
    email.SetSendEncrypted(true)

    //  Indicate that we want 192-bit 3DES encryption:
    email.SetPkcs7CryptAlg("3des")
    email.SetPkcs7KeyLength(192)

    //  Specify the certificate to be used for encryption.
    success = email.SetEncryptCert(cert)

    //  Tell the mailman to use an opaque signature (as opposed to a detached signature)
    mailman.SetOpaqueSigning(true)

    //  SMTP server (use your settings and refer to the online
    //  reference  documentation for more options)
    mailman.SetSmtpHost("smtp.mymailserver.com")
    mailman.SetSmtpUsername("myLogin")
    mailman.SetSmtpPassword("myPassword")
    mailman.SetSmtpPort(587)
    mailman.SetStartTLS(true)

    //  Send the signed/encrypted EDI email
    success = mailman.SendEmail(email)
    if success != true {
        fmt.Println(mailman.LastErrorText())
    } else {
        fmt.Println("Mail Sent!")
    }


    mailman.DisposeMailMan()