Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) Process Large POP3 MailboxDemonstrates how to read email from a mailbox that may contain a large number of emails.
#import <CkoMailMan.h> #import <CkoStringArray.h> #import <NSString.h> #import <CkoEmailBundle.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoMailMan *mailman = [[CkoMailMan alloc] init]; mailman.MailHost = @"pop.example.com"; mailman.PopUsername = @"myLogin"; mailman.PopPassword = @"myPassword"; mailman.MailPort = [NSNumber numberWithInt:995]; mailman.PopSsl = YES; // Get the list of UIDLs for all emails in the mailbox. CkoStringArray *sa = [mailman GetUidls]; if (mailman.LastMethodSuccess == NO) { NSLog(@"%@",mailman.LastErrorText); return; } int i; int numEmails = [sa.Count intValue]; if (numEmails == 0) { NSLog(@"%@",@"Mailbox is empty"); return; } int chunkSize = 6; // Download the emails in chunks of 6 emails each. int chunkBeginIdx = 0; int chunkEndIdx = chunkSize - 1; if (chunkEndIdx >= numEmails) { chunkEndIdx = numEmails - 1; } CkoStringArray *saChunk = [[CkoStringArray alloc] init]; while ((chunkBeginIdx < numEmails)) { NSLog(@"%d%@%d",chunkBeginIdx,@" to ",chunkEndIdx); // Build a chunk of UIDLs. [saChunk Clear]; for (i = chunkBeginIdx; i <= chunkEndIdx; i++) { [saChunk Append: [sa GetString: [NSNumber numberWithInt: i]]]; } // Log the UIDLs in this chunk... NSString *chunkStr = [saChunk SaveToText]; NSLog(@"%@",chunkStr); // Download this chunk of email from the POP3 server. CkoEmailBundle *bundle = [mailman FetchMultiple: saChunk]; if (mailman.LastMethodSuccess == NO) { NSLog(@"%@",mailman.LastErrorText); return; } NSLog(@"%@%d%@",@"Downloaded ",[bundle.MessageCount intValue],@" emails."); NSLog(@"%@",@"----"); // Process the bundle... // (your application's processing code goes here...) // Get the next chunk... chunkBeginIdx = chunkBeginIdx + chunkSize; chunkEndIdx = chunkEndIdx + chunkSize; if (chunkEndIdx >= numEmails) { chunkEndIdx = numEmails - 1; } } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.