Lua Requires Chilkat v11.0.0+
Lua
Mark IMAP Email as Read/Unread (Seen/Unseen)
Demonstrates how to mark emails as read or unread.Chilkat Lua Downloads
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()
-- 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
-- Set PeekMode so that downloaded messages are not
-- automatically marked as seen.
imap.peek_mode = true
-- The NumMessages property contains the number of messages
-- in the currently selected mailbox.
local numMsgs = imap.num_messages
if numMsgs == 0 then
return
end
local email = chilkat.Email.new()
for i = 1, numMsgs do
-- Download each email by sequence number (not UID)
success = imap:fetch_email(false, i, false, email)
if not success then
print(imap.last_error_text)
return
end
-- If desired, mark the email as SEEN. There are two
-- ways to do it:
-- 1) Set the flag directly by using the sequence number
-- Indicate that we are passing a sequence number and
-- not a UID:
local bIsUid = false
-- Set the SEEN flag = 1 to mark the email as SEEN,
-- or set it to 0 to mark it as not-seen.
success = imap:set_flag(i, bIsUid, "SEEN", 1)
if not success then
print(imap.last_error_text)
return
end
-- 2) Alternatively, we can use the email object.
-- When an email is downloaded from the IMAP server
-- Chilkat will add a "ckx-imap-uid" header to the email.
-- This makes it possible to know the UID associated with
-- the email. (This is not the sequence number, which may change
-- from session to session, but the UID which does not change.
-- The SetMailFlag method is identical to SetFlag, except
-- it gets the UID from the ckx-imap-uid header.
-- For example:
success = imap:set_mail_flag(email, "SEEN", 1)
if not success then
print(imap.last_error_text)
return
end
end
-- Disconnect from the IMAP server.
success = imap:disconnect()