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

Subscribe to Mailboxes and List Subscribed Mailboxes

See more IMAP Examples

Demonstrates how to list subscribed mailboxes, and unsubscribe/subscribe to a mailbox.

Chilkat Lua Downloads

Lua
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

-- First examine the already subscribed mailboxes.
local refName = ""
local wildcardedMailbox = "*"
local subscribed = true

local mboxes = chilkat.Mailboxes.new()
success = imap:mbx_list(subscribed, refName, wildcardedMailbox, mboxes)
if not success then
    print(imap.last_error_text)
    return
end

local i = 0
while i < mboxes.count do
    print(mboxes:get_name(i))
    i = i + 1
end

print("----")

-- Sample output.

-- INBOX
-- INBOX/recent
-- INBOX/misc
-- INBOX/misc/solutions
-- ...
-- Outbox
-- Deleted Items
-- Sent Items
-- Drafts
-- Junk E-mail
-- Trash
-- Sent
-- Templates

-- Let's unsubscribe to "INBOX/misc/solutions".
success = imap:unsubscribe("INBOX/misc/solutions")
if not success then
    print(imap.last_error_text)
    return
end

-- Get the list of subscribed mailboxes again to verify that "INBOX/misc/solutions" is missing.
success = imap:mbx_list(subscribed, "", "INBOX/misc*", mboxes)
if not success then
    print(imap.last_error_text)
    return
end

i = 0
while i < mboxes.count do
    print(mboxes:get_name(i))
    i = i + 1
end

print("----")

-- Re-subscribe to "INBOX/misc/solutions".
success = imap:subscribe("INBOX/misc/solutions")
if not success then
    print(imap.last_error_text)
    return
end

-- Get the list of subscribed mailboxes again to verify that "INBOX/misc/solutions" is back in the list.
success = imap:mbx_list(subscribed, "", "INBOX/misc*", mboxes)
if not success then
    print(imap.last_error_text)
    return
end

i = 0
while i < mboxes.count do
    print(mboxes:get_name(i))
    i = i + 1
end

print("----")

-- Disconnect from the IMAP server.
success = imap:disconnect()