Objective-C
Objective-C
How to Download Messages in MessageSet One at a Time
See more IMAP Examples
If a message set contains a huge number of emails, it's NOT a good idea to try to download all at once into an email bundle using a method such as FetchBundle. It's better to iterate over the messages in the set to download one by one.Chilkat Objective-C Downloads
#import <CkoImap.h>
#import <CkoMessageSet.h>
#import <CkoEmail.h>
BOOL success = NO;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoImap *imap = [[CkoImap alloc] init];
// Connect using TLS.
imap.Ssl = YES;
imap.Port = [NSNumber numberWithInt:993];
success = [imap Connect: @"imap.example.com"];
if (success == NO) {
NSLog(@"%@",imap.LastErrorText);
return;
}
// Authenticate
success = [imap Login: @"email_account_login" password: @"email_account_password"];
if (success == NO) {
NSLog(@"%@",imap.LastErrorText);
return;
}
// Select an IMAP mailbox
success = [imap SelectMailbox: @"Inbox"];
if (success == NO) {
NSLog(@"%@",imap.LastErrorText);
return;
}
// Search for messages and return a set of matching messages.
// (This example will simply search for ALL messages.)
BOOL fetchUids = YES;
CkoMessageSet *messageSet = [[CkoMessageSet alloc] init];
success = [imap QueryMbx: @"ALL" bUid: fetchUids msgSet: messageSet];
if (success == NO) {
NSLog(@"%@",imap.LastErrorText);
return;
}
NSLog(@"%@%d",@"Number of messages = ",[messageSet.Count intValue]);
CkoEmail *email = [[CkoEmail alloc] init];
int i = 0;
while (i < [messageSet.Count intValue]) {
success = [imap FetchEmail: NO msgId: [messageSet GetId: [NSNumber numberWithInt: i]] bUid: fetchUids email: email];
if (success == NO) {
NSLog(@"%@",imap.LastErrorText);
return;
}
NSLog(@"%@%@%@",email.From,@"; ",email.Subject);
i = i + 1;
}
NSLog(@"%@",@"OK");