Sample code for 30+ languages & platforms
Swift

Send Signed and Encrypted EDI Email (EDIFACT)

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

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = 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.
    let mailman = CkoMailMan()!

    //  Create a new email object
    var email: CkoEmail?

    //  Build the basic EDI email where the body is the EDIFACT message:
    var ediMsg: String? = "UNB+IATB:1+6XPPC ..."
    var name: String? = "something"
    var filename: String? = "something"
    var charset: String? = "iso-8859-1"
    email!.setEdifactBody(message: ediMsg, name: name, filename: filename, charset: charset)

    email.subject = "This is the subject"
    email.from = "Chilkat Admin <admin@chilkatsoft.com>"
    success = email!.add(to: "Chilkat Support", emailAddress: "support@chilkatsoft.com")

    //  Indicate that the email should be sent signed.
    email.sendSigned = 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(pfxFilePath: "/pfx_files/myCertAndPrivateKey.pfx", password: "secret")
    if success != true {
        print("\(mailman.lastErrorText!)")
        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.
    var cert: CkoCert?
    success = cert!.load(fromFile: "/certs/recipientCert.cer")
    if success != true {
        print("\(cert!.lastErrorText!)")
        return
    }

    //  Indicate that the email is to be sent encrypted.
    email.sendEncrypted = true

    //  Indicate that we want 192-bit 3DES encryption:
    email.pkcs7CryptAlg = "3des"
    email.pkcs7KeyLength = 192

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

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

    //  SMTP server (use your settings and refer to the online
    //  reference  documentation for more options)
    mailman.smtpHost = "smtp.mymailserver.com"
    mailman.smtpUsername = "myLogin"
    mailman.smtpPassword = "myPassword"
    mailman.smtpPort = 587
    mailman.startTLS = true

    //  Send the signed/encrypted EDI email
    success = mailman.sendEmail(email: email)
    if success != true {
        print("\(mailman.lastErrorText!)")
    }
    else {
        print("Mail Sent!")
    }


}