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

How to Download Messages in MessageSet One at a Time

See more IMAP Examples

If a message set contains a huge number of emails, it's NOT a good idea to try to download all at once into an email bundle using a method such as FetchBundle. It's better to iterate over the messages in the set to download one by one.

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.

local imap = chilkat.Imap.new()

-- Connect using 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

-- Authenticate
success = imap:login("email_account_login", "email_account_password")
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

-- Search for messages and return a set of matching messages.
-- (This example will simply search for ALL messages.)
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

print("Number of messages = " .. messageSet.count)

local email = chilkat.Email.new()
local i = 0
while i < messageSet.count do
    success = imap:fetch_email(false, messageSet:get_id(i), fetchUids, email)
    if not success then
        print(imap.last_error_text)
        return
    end

    print(email.from .. "; " .. email.subject)

    i = i + 1
end

print("OK")