Sample code for 30+ languages & platforms
Lua

Create Non-Multipart Email with XML Body that is an Attachment

See more SMTP Examples

Creates an email where the only body is a binary WAV file. The technique used in the example could be applied to other binary files, such as PDF, MS-WORD docs, Excel docs, etc.

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 goal of this example is to create an email that has this MIME format,
-- where the body of the email is XML using base64 encoding,
-- and the Content-Type and Content-Disposition are set as indicated.

-- Date: Wed, 23 Aug 2023 09:01:52 +0200 (CEST)
-- From: joe@example1.com
-- Subject: [v=EMCS.NL][a=NL****][k=****][s=0]
-- To: mary@example2.com
-- MIME-Version: 1.0
-- Content-Type: application/octet-stream; charset=us-ascii; name=6bd8dfe259b3a42c90a28a82b5fc6e77.txt
-- Content-Transfer-Encoding: Base64
-- Content-Disposition: attachment; filename=6bd8dfe259b3a42c90a28a82b5fc6e77.txt
-- Message-Id: <......>
--
-- <multi-line base64 encoded XML here>

local success = true

local xmlBody = "<ie:IE801 xmlns:ie=\"urn:publicid:-:EC:DGTAXUD:EMCS:PHASE4:IE801:V3.01\" xmlns:tms=\"urn:publicid:-:EC:DGTAXUD:EMCS:PHASE4:TMS:V3.01\">....</ie:IE801>"

local email = chilkat.Email.new()

-- Add subject, TO, FROM, etc.
email.subject = "[v=EMCS.NL][a=NL****][k=****][s=0]"
email.from = "joe@example1.com"
success = email:add_to("Mary", "mary@example2.com")

email.body = xmlBody

email:add_header_field("Content-Transfer-Encoding", "Base64")
email:add_header_field("Content-Type", "application/octet-stream; charset=us-ascii; name=6bd8dfe259b3a42c90a28a82b5fc6e77.txt")
email:add_header_field("Content-Disposition", "attachment; filename=6bd8dfe259b3a42c90a28a82b5fc6e77.txt")

-- Your email is ready to send
local mailman = chilkat.MailMan.new()

mailman.smtp_host = "smtp.my_mail_server.com"
mailman.smtp_username = "myUsername"
mailman.smtp_password = "myPassword"
mailman.smtp_port = 465
mailman.smtp_ssl = true
mailman.start_tls = true

success = mailman:send_email(email)
if not success then
    print(mailman.last_error_text)
    return
end

success = mailman:close_smtp_connection()
if not success then
    print("Connection to SMTP server not closed cleanly.")
end

print("Mail Sent!")