Lua Requires Chilkat v11.0.0+
Lua
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
-- In the following call to loadlib, change the path (./chilkat.dll) to the relative or absolute directory where the chilkat.dll, chilkat.so, or chilkat.dylib is located.
chilkat = assert(package.loadlib("./chilkat.dll", "luaopen_chilkat"))()
print(chilkat._VERSION)
local success = false
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local imap = chilkat.newImap{}
-- Connect using TLS.
imap:setSsl(true)
imap:setPort(993)
success = imap:Connect("imap.example.com")
if success == false then
print(imap:LastErrorText())
end
-- Authenticate
success = imap:Login("email_account_login","email_account_password")
if success == false then
print(imap:LastErrorText())
end
-- Select an IMAP mailbox
success = imap:SelectMailbox("Inbox")
if success == false then
print(imap:LastErrorText())
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.newMessageSet{}
success = imap:QueryMbx("ALL",fetchUids,messageSet)
if success == false then
print(imap:LastErrorText())
end
print("Number of messages = ", messageSet:Count())
local email = chilkat.newEmail{}
local i = 0
while i < messageSet:Count() do
success = imap:FetchEmail(false,messageSet:GetId(i),fetchUids,email)
if success == false then
print(imap:LastErrorText())
end
print(email:From(), "; ", email:Subject())
i = i + 1
end
print("OK")