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
(C) Process Large POP3 MailboxDemonstrates how to read email from a mailbox that may contain a large number of emails.
#include <C_CkMailMan.h> #include <C_CkStringArray.h> #include <C_CkEmailBundle.h> void ChilkatSample(void) { HCkMailMan mailman; HCkStringArray sa; int i; int numEmails; int chunkSize; int chunkBeginIdx; int chunkEndIdx; HCkStringArray saChunk; const char *chunkStr; HCkEmailBundle bundle; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. mailman = CkMailMan_Create(); CkMailMan_putMailHost(mailman,"pop.example.com"); CkMailMan_putPopUsername(mailman,"myLogin"); CkMailMan_putPopPassword(mailman,"myPassword"); CkMailMan_putMailPort(mailman,995); CkMailMan_putPopSsl(mailman,TRUE); // Get the list of UIDLs for all emails in the mailbox. sa = CkMailMan_GetUidls(mailman); if (CkMailMan_getLastMethodSuccess(mailman) == FALSE) { printf("%s\n",CkMailMan_lastErrorText(mailman)); CkMailMan_Dispose(mailman); return; } numEmails = CkStringArray_getCount(sa); if (numEmails == 0) { printf("Mailbox is empty\n"); CkMailMan_Dispose(mailman); return; } chunkSize = 6; // Download the emails in chunks of 6 emails each. chunkBeginIdx = 0; chunkEndIdx = chunkSize - 1; if (chunkEndIdx >= numEmails) { chunkEndIdx = numEmails - 1; } saChunk = CkStringArray_Create(); while ((chunkBeginIdx < numEmails)) { printf("%d to %d\n",chunkBeginIdx,chunkEndIdx); // Build a chunk of UIDLs. CkStringArray_Clear(saChunk); for (i = chunkBeginIdx; i <= chunkEndIdx; i++) { CkStringArray_Append(saChunk,CkStringArray_getString(sa,i)); } // Log the UIDLs in this chunk... chunkStr = CkStringArray_saveToText(saChunk); printf("%s\n",chunkStr); // Download this chunk of email from the POP3 server. bundle = CkMailMan_FetchMultiple(mailman,saChunk); if (CkMailMan_getLastMethodSuccess(mailman) == FALSE) { printf("%s\n",CkMailMan_lastErrorText(mailman)); CkMailMan_Dispose(mailman); CkStringArray_Dispose(saChunk); return; } printf("Downloaded %d emails.\n",CkEmailBundle_getMessageCount(bundle)); printf("----\n"); // Process the bundle... // (your application's processing code goes here...) CkEmailBundle_Dispose(bundle); // Get the next chunk... chunkBeginIdx = chunkBeginIdx + chunkSize; chunkEndIdx = chunkEndIdx + chunkSize; if (chunkEndIdx >= numEmails) { chunkEndIdx = numEmails - 1; } } CkStringArray_Dispose(sa); CkMailMan_Dispose(mailman); CkStringArray_Dispose(saChunk); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.