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) Reading Unread POP3 EmailThe POP3 protocol does not provide the ability to ask the server which emails are "unread". Furthermore, a pure POP3 server does not even keep this information. Some servers, such as Exchange Server, expose both POP3 and IMAP interfaces. In these cases, information about read/unread status exists on the server, but it is only available via the IMAP protocol. Email clients such as Outlook and Thunderbird keep read/unread information on the client computer. This example demonstrates how UIDLs can be saved to track and read "unread" email.
#include <C_CkMailMan.h> #include <C_CkStringArray.h> #include <C_CkEmailBundle.h> #include <C_CkEmail.h> void ChilkatSample(void) { HCkMailMan mailman; HCkStringArray saSeenUidls; BOOL success; HCkStringArray saUidls; HCkStringArray saUnseenUidls; int i; int n; HCkEmailBundle bundle; HCkEmail email; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // The mailman object is used for receiving (POP3) // and sending (SMTP) email. mailman = CkMailMan_Create(); // Set the POP3 server's hostname CkMailMan_putMailHost(mailman,"pop.someMailServer.com"); // Set the POP3 login/password. CkMailMan_putPopUsername(mailman,"***"); CkMailMan_putPopPassword(mailman,"***"); // You may keep a list of already-seen UIDLs in a text file: // If this is the first time you're running this example, // create an empty text file named "seenUidls.txt" saSeenUidls = CkStringArray_Create(); success = CkStringArray_LoadFromFile(saSeenUidls,"seenUidls.txt"); if (success != TRUE) { printf("failed to load seenUidls.txt\n"); CkMailMan_Dispose(mailman); CkStringArray_Dispose(saSeenUidls); return; } // Get the complete list of UIDLs on the mail server. saUidls = CkMailMan_GetUidls(mailman); if (CkMailMan_getLastMethodSuccess(mailman) == FALSE) { printf("%s\n",CkMailMan_lastErrorText(mailman)); CkMailMan_Dispose(mailman); CkStringArray_Dispose(saSeenUidls); return; } // Create a new string array object (it's an object, not an actual array) // and add the UIDLs from saUidls that aren't already seen. saUnseenUidls = CkStringArray_Create(); i = 0; n = CkStringArray_getCount(saUidls); while (i < n) { if (CkStringArray_Contains(saSeenUidls,CkStringArray_getString(saUidls,i)) != TRUE) { success = CkStringArray_Append(saUnseenUidls,CkStringArray_getString(saUidls,i)); } i = i + 1; } if (CkStringArray_getCount(saUnseenUidls) == 0) { printf("No unseen emails!\n"); CkStringArray_Dispose(saUidls); CkMailMan_Dispose(mailman); CkStringArray_Dispose(saSeenUidls); CkStringArray_Dispose(saUnseenUidls); return; } // Download in full the unseen emails: bundle = CkMailMan_FetchMultiple(mailman,saUnseenUidls); if (CkMailMan_getLastMethodSuccess(mailman) == FALSE) { printf("%s\n",CkMailMan_lastErrorText(mailman)); CkStringArray_Dispose(saUidls); CkMailMan_Dispose(mailman); CkStringArray_Dispose(saSeenUidls); CkStringArray_Dispose(saUnseenUidls); return; } i = 0; while (i < CkEmailBundle_getMessageCount(bundle)) { email = CkEmailBundle_GetEmail(bundle,i); printf("%s\n",CkEmail_ck_from(email)); printf("%s\n",CkEmail_subject(email)); printf("----\n"); CkEmail_Dispose(email); i = i + 1; } // Save saUidls to "seenUidls.txt" success = CkStringArray_SaveToFile(saUidls,"seenUidls.txt"); CkStringArray_Dispose(saUidls); CkMailMan_Dispose(mailman); CkStringArray_Dispose(saSeenUidls); CkStringArray_Dispose(saUnseenUidls); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.