Sample code for 30+ languages & platforms
Objective-C

Get the Total Size of an IMAP Message

See more IMAP Examples

Demonstrates the Chilkat Imap.GetMailSize method, which returns the complete server-reported size of a message in bytes, including attachment data. The only argument is the Email. This example fetches only the headers and prints the full message size.

Background: The server reports each message's total size, so this value is available even when only the headers were downloaded. That lets a client show a size column in a message list, sort by size, or warn the user before downloading an unusually large message — all without fetching the full body first.

Chilkat Objective-C Downloads

Objective-C
#import <CkoImap.h>
#import <CkoEmail.h>

BOOL success = NO;

//  Demonstrates the Imap.GetMailSize method, which returns the complete server-reported size
//  of a message in bytes, including attachments.  The only argument is the Email.

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

imap.Ssl = YES;
imap.Port = [NSNumber numberWithInt:993];

success = [imap Connect: @"imap.example.com"];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

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

success = [imap SelectMailbox: @"Inbox"];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

//  Fetch only the message headers.  Attachment bodies are NOT downloaded, but the ckx-imap-*
//  metadata describing the attachments is present, so the attachment info methods still work.
BOOL headersOnly = YES;
BOOL useUid = NO;
int seqNum = 1;
CkoEmail *email = [[CkoEmail alloc] init];
success = [imap FetchEmail: headersOnly msgId: seqNum bUid: useUid email: email];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}

int sizeBytes = [[imap GetMailSize: email] intValue];
NSLog(@"%@%d%@",@"Total message size: ",sizeBytes,@" bytes");

success = [imap Disconnect];
if (success == NO) {
    NSLog(@"%@",imap.LastErrorText);
    return;
}