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

IMAP Download All Email One at a Time

Demonstrates how to download every email in an IMAP mailbox one at a time as a MIME string or as an email object. (The MIME contains the full contents of the email including all attachments.)

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

local imap = chilkat.Imap.new()

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

-- Connect to an IMAP server.
-- Use TLS
imap.ssl = true
imap.port = 993
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

-- Once the mailbox is selected, the NumMessages property
-- will contain the number of messages in the mailbox.
-- You may loop from 1 to NumMessages to
-- fetch each message by sequence number.

local bUid = false
local mimeStr = ""
local n = imap.num_messages
for i = 1, n do
    -- Download the email by sequence number.
    mimeStr = imap:fetch_single_as_mime(i, bUid)

    -- ... your application may process each MIME string...
end

-- An alternative is to download each email in the form of an
-- email object, like this:
local email = chilkat.Email.new()
for i = 1, n do
    -- Download the email by sequence number.
    success = imap:fetch_email(false, i, bUid, email)

    -- ... your application may process the email object...
end

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