Lua Requires Chilkat v11.0.0+
Lua
Delete Email Individually (One at a time) from an IMAP Mailbox
Downloads email from an IMAP mailbox and deletes emails individually (one by one).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
-- We can choose to fetch UIDs or sequence numbers.
local fetchUids = true
-- Get the message IDs of all the emails in the mailbox
local messageSet = chilkat.MessageSet.new()
success = imap:query_mbx("ALL", fetchUids, messageSet)
if not success then
print(imap.last_error_text)
return
end
-- Fetch the emails into a bundle object:
local bundle = chilkat.EmailBundle.new()
local headersOnly = false
success = imap:fetch_msg_set(headersOnly, messageSet, bundle)
if not success then
print(imap.last_error_text)
return
end
-- To mark a complete set of emails for deletion, call SetFlags:
success = imap:set_flags(messageSet, "Deleted", 1)
if not success then
print(imap.last_error_text)
return
end
-- Messages can also be marked for deletion individually:
-- Loop over the bundle and mark each message for deletion.
local email = chilkat.Email.new()
local i = 0
local numEmails = bundle.message_count
while i < numEmails do
bundle:email_at(i, email)
print(email.from)
print(email.subject)
-- To delete this email, set the "Deleted" flag to 1.
-- The email is not actually deleted until Expunge or
-- ExpungeAndClose is called.
success = imap:set_mail_flag(email, "Deleted", 1)
if not success then
print(imap.last_error_text)
return
end
print("--")
i = i + 1
end
success = imap:expunge_and_close()
if not success then
print(imap.last_error_text)
return
end
-- Disconnect from the IMAP server.
success = imap:disconnect()