Sample code for 30+ languages & platforms
Lua

Send Signed and Encrypted EDI Email (EDIFACT)

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

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- 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.
local mailman = chilkat.MailMan.new()

--  Create a new email object
local email = chilkat.Email.new()

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

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

--  Indicate that the email should be sent signed.
email.send_signed = 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:add_pfx_source_file("/pfx_files/myCertAndPrivateKey.pfx", "secret")
if not success then
    print(mailman.last_error_text)
    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.
local cert = chilkat.Cert.new()
success = cert:load_from_file("/certs/recipientCert.cer")
if not success then
    print(cert.last_error_text)
    return
end

--  Indicate that the email is to be sent encrypted.
email.send_encrypted = true

--  Indicate that we want 192-bit 3DES encryption:
email.pkcs7_crypt_alg = "3des"
email.pkcs7_key_length = 192

--  Specify the certificate to be used for encryption.
success = email:set_encrypt_cert(cert)

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

--  SMTP server (use your settings and refer to the online
--  reference  documentation for more options)
mailman.smtp_host = "smtp.mymailserver.com"
mailman.smtp_username = "myLogin"
mailman.smtp_password = "myPassword"
mailman.smtp_port = 587
mailman.start_tls = true

--  Send the signed/encrypted EDI email
success = mailman:send_email(email)
if not success then
    print(mailman.last_error_text)
else
    print("Mail Sent!")
end