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
(Unicode C) Process Large POP3 MailboxDemonstrates how to read email from a mailbox that may contain a large number of emails.
#include <C_CkMailManW.h> #include <C_CkStringArrayW.h> #include <C_CkEmailBundleW.h> void ChilkatSample(void) { HCkMailManW mailman; HCkStringArrayW sa; int i; int numEmails; int chunkSize; int chunkBeginIdx; int chunkEndIdx; HCkStringArrayW saChunk; const wchar_t *chunkStr; HCkEmailBundleW bundle; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. mailman = CkMailManW_Create(); CkMailManW_putMailHost(mailman,L"pop.example.com"); CkMailManW_putPopUsername(mailman,L"myLogin"); CkMailManW_putPopPassword(mailman,L"myPassword"); CkMailManW_putMailPort(mailman,995); CkMailManW_putPopSsl(mailman,TRUE); // Get the list of UIDLs for all emails in the mailbox. sa = CkMailManW_GetUidls(mailman); if (CkMailManW_getLastMethodSuccess(mailman) == FALSE) { wprintf(L"%s\n",CkMailManW_lastErrorText(mailman)); CkMailManW_Dispose(mailman); return; } numEmails = CkStringArrayW_getCount(sa); if (numEmails == 0) { wprintf(L"Mailbox is empty\n"); CkMailManW_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 = CkStringArrayW_Create(); while ((chunkBeginIdx < numEmails)) { wprintf(L"%d to %d\n",chunkBeginIdx,chunkEndIdx); // Build a chunk of UIDLs. CkStringArrayW_Clear(saChunk); for (i = chunkBeginIdx; i <= chunkEndIdx; i++) { CkStringArrayW_Append(saChunk,CkStringArrayW_getString(sa,i)); } // Log the UIDLs in this chunk... chunkStr = CkStringArrayW_saveToText(saChunk); wprintf(L"%s\n",chunkStr); // Download this chunk of email from the POP3 server. bundle = CkMailManW_FetchMultiple(mailman,saChunk); if (CkMailManW_getLastMethodSuccess(mailman) == FALSE) { wprintf(L"%s\n",CkMailManW_lastErrorText(mailman)); CkMailManW_Dispose(mailman); CkStringArrayW_Dispose(saChunk); return; } wprintf(L"Downloaded %d emails.\n",CkEmailBundleW_getMessageCount(bundle)); wprintf(L"----\n"); // Process the bundle... // (your application's processing code goes here...) CkEmailBundleW_Dispose(bundle); // Get the next chunk... chunkBeginIdx = chunkBeginIdx + chunkSize; chunkEndIdx = chunkEndIdx + chunkSize; if (chunkEndIdx >= numEmails) { chunkEndIdx = numEmails - 1; } } CkStringArrayW_Dispose(sa); CkMailManW_Dispose(mailman); CkStringArrayW_Dispose(saChunk); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.