Sample code for 30+ languages & platforms
Lua Requires Chilkat v11.0.0+

Secure IMAP over TLS/SSL

To communicate with an IMAP server over TLS/SSL, simply set the Ssl and Port properties. The remainder of your code is the same as with non-SSL.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local imap = chilkat.Imap.new()

-- To use a secure TLS/SSL connection, set the Ssl property and the port:
imap.ssl = true
-- The typical port for IMAP SSL is 993
imap.port = 993

-- Connect to an IMAP server.
local success = imap:connect("imap.example.com")
if not success then
    print(imap.last_error_text)
    return
end

-- Login
success = imap:login("myLogin", "myPassword")
if not success then
    print(imap.last_error_text)
    return
end

-- Select an IMAP mailbox
success = imap:select_mailbox("Inbox")
if not success then
    print(imap.last_error_text)
    return
end

-- Get the message IDs of all the emails in the mailbox
local fetchUids = true
local messageSet = chilkat.MessageSet.new()
success = imap:query_mbx("ALL", fetchUids, messageSet)
if not success then
    print(imap.last_error_text)
    return
end

-- Fetch the emails into a bundle object:
local bundle = chilkat.EmailBundle.new()
local headersOnly = false
success = imap:fetch_msg_set(headersOnly, messageSet, bundle)
if not success then
    print(imap.last_error_text)
    return
end

-- Loop over the bundle and display the FROM and SUBJECT of each.
local email = chilkat.Email.new()
local i = 0
local numEmails = bundle.message_count
while i < numEmails do
    bundle:email_at(i, email)

    print(email.from)
    print(email.subject)
    print("--")
    i = i + 1
end

-- Disconnect from the IMAP server.
success = imap:disconnect()