Sample code for 30+ languages & platforms
Objective-C

Subscribe to Mailboxes and List Subscribed Mailboxes

See more IMAP Examples

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

Chilkat Objective-C Downloads

Objective-C
#import <CkoImap.h>
#import <NSString.h>
#import <CkoMailboxes.h>

BOOL success = NO;

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

CkoImap *imap = [[CkoImap alloc] init];

//  Connect to an IMAP server.
//  Use TLS
imap.Ssl = YES;
imap.Port = [NSNumber numberWithInt:993];
success = [imap Connect: @"imap.example.com"];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

//  Login
success = [imap Login: @"myLogin" password: @"myPassword"];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

//  First examine the already subscribed mailboxes.
NSString *refName = @"";
NSString *wildcardedMailbox = @"*";
BOOL subscribed = YES;

CkoMailboxes *mboxes = [[CkoMailboxes alloc] init];
success = [imap MbxList: subscribed reference: refName mbxPattern: wildcardedMailbox mboxes: mboxes];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

int i = 0;
while (i < [mboxes.Count intValue]) {
    NSLog(@"%@",[mboxes GetName: [NSNumber numberWithInt: i]]);
    i = i + 1;
}

NSLog(@"%@",@"----");

//  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 (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

//  Get the list of subscribed mailboxes again to verify that "INBOX/misc/solutions" is missing.
success = [imap MbxList: subscribed reference: @"" mbxPattern: @"INBOX/misc*" mboxes: mboxes];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

i = 0;
while (i < [mboxes.Count intValue]) {
    NSLog(@"%@",[mboxes GetName: [NSNumber numberWithInt: i]]);
    i = i + 1;
}

NSLog(@"%@",@"----");

//  Re-subscribe to "INBOX/misc/solutions".
success = [imap Subscribe: @"INBOX/misc/solutions"];
if (success == NO) {
    NSLog(@"%@",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 reference: @"" mbxPattern: @"INBOX/misc*" mboxes: mboxes];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

i = 0;
while (i < [mboxes.Count intValue]) {
    NSLog(@"%@",[mboxes GetName: [NSNumber numberWithInt: i]]);
    i = i + 1;
}

NSLog(@"%@",@"----");

//  Disconnect from the IMAP server.
success = [imap Disconnect];