Lua Requires Chilkat v11.0.0+
Lua
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
-- 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
local imap = chilkat.newImap{}
-- 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:setSsl(true)
imap:setPort(993)
success = imap:Connect("imap.example.com")
if success == false then
print(imap:LastErrorText())
end
-- Login
success = imap:Login("myLogin","myPassword")
if success == false then
print(imap:LastErrorText())
end
-- Select an IMAP mailbox
success = imap:SelectMailbox("Inbox")
if success == false then
print(imap:LastErrorText())
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 n = imap:NumMessages()
for i = 1, n do
-- Download the email by sequence number.
local mimeStr = imap:FetchSingleAsMime(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.newEmail{}
for i = 1, n do
-- Download the email by sequence number.
success = imap:FetchEmail(false,i,bUid,email)
-- ... your application may process the email object...
end
-- Disconnect from the IMAP server.
success = imap:Disconnect()