Sample code for 30+ languages & platforms
Swift 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 Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    //  This example assumes the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    let imap = CkoImap()!

    //  Connect to an IMAP server.
    //  Use TLS
    imap.ssl = true
    imap.port = 993
    success = imap.connect(hostname: "imap.example.com")
    if success == false {
        print("\(imap.lastErrorText!)")
        return
    }

    //  Login
    success = imap.login(login: "myLogin", password: "myPassword")
    if success == false {
        print("\(imap.lastErrorText!)")
        return
    }

    //  First examine the already subscribed mailboxes.
    var refName: String? = ""
    var wildcardedMailbox: String? = "*"
    var subscribed: Bool = true

    let mboxes = CkoMailboxes()!
    success = imap.mbxList(subscribed: subscribed, reference: refName, mbxPattern: wildcardedMailbox, mboxes: mboxes)
    if success == false {
        print("\(imap.lastErrorText!)")
        return
    }

    var i: Int = 0
    while i < mboxes.count.intValue {
        print("\(mboxes.getName(index: i)!)")
        i = i + 1
    }

    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(mailbox: "INBOX/misc/solutions")
    if success == false {
        print("\(imap.lastErrorText!)")
        return
    }

    //  Get the list of subscribed mailboxes again to verify that "INBOX/misc/solutions" is missing.
    success = imap.mbxList(subscribed: subscribed, reference: "", mbxPattern: "INBOX/misc*", mboxes: mboxes)
    if success == false {
        print("\(imap.lastErrorText!)")
        return
    }

    i = 0
    while i < mboxes.count.intValue {
        print("\(mboxes.getName(index: i)!)")
        i = i + 1
    }

    print("----")

    //  Re-subscribe to "INBOX/misc/solutions".
    success = imap.subscribe(mailbox: "INBOX/misc/solutions")
    if success == false {
        print("\(imap.lastErrorText!)")
        return
    }

    //  Get the list of subscribed mailboxes again to verify that "INBOX/misc/solutions" is back in the list.
    success = imap.mbxList(subscribed: subscribed, reference: "", mbxPattern: "INBOX/misc*", mboxes: mboxes)
    if success == false {
        print("\(imap.lastErrorText!)")
        return
    }

    i = 0
    while i < mboxes.count.intValue {
        print("\(mboxes.getName(index: i)!)")
        i = i + 1
    }

    print("----")

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

}