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) Examine Junk/NonJunk Flags on Outlook.com and GMailExamines the Junk and NonJunk FLAGS for IMAP on Outlook.com and GMail.com.
#include <C_CkImapW.h> void ChilkatSample(void) { HCkImapW imap; BOOL success; const wchar_t *selectResponse; int sequenceNum; const wchar_t *flags; int minSeqNum; const wchar_t *flags; imap = CkImapW_Create(); // This example assumes Chilkat Imap to have been previously unlocked. // See Unlock Imap for sample code. // Connect to the outlook.com IMAP server. // We'll do the same for GMail below.. // Use TLS CkImapW_putSsl(imap,TRUE); CkImapW_putPort(imap,993); success = CkImapW_Connect(imap,L"imap-mail.outlook.com"); if (success != TRUE) { wprintf(L"%s\n",CkImapW_lastErrorText(imap)); CkImapW_Dispose(imap); return; } // Login success = CkImapW_Login(imap,L"myAccount@outlook.com",L"OUTLOOK_PASSWORD"); if (success != TRUE) { wprintf(L"%s\n",CkImapW_lastErrorText(imap)); CkImapW_Dispose(imap); return; } // Begin keeping a log of the session here. CkImapW_putKeepSessionLog(imap,TRUE); // Select an IMAP mailbox success = CkImapW_SelectMailbox(imap,L"Inbox"); if (success != TRUE) { wprintf(L"%s\n",CkImapW_lastErrorText(imap)); CkImapW_Dispose(imap); return; } // The LastResponse property contains the full response of the last command. // The response to the SELECT mailbox command shows the FLAGS that can be set // for emails in the mailbox. selectResponse = CkImapW_lastResponse(imap); wprintf(L"%s\n",selectResponse); // The response to "SELECT Inbox" looks like this: // There are no FLAGS for Junk/NonJunk.. // * 4 EXISTS // * 0 RECENT // * FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent) // * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent flags // * OK [UIDVALIDITY 14] UIDVALIDITY value // * OK [UIDNEXT 1719] The next unique identifier value // aaac OK [READ-WRITE] SELECT completed. // Fetch the flags for each message in the mailbox. // Prior to running this example, (using Mozilla Thunderbird) I marked one of the emails // in my outlook.com Inbox as Junk. sequenceNum = 1; while (sequenceNum <= CkImapW_getNumMessages(imap)) { flags = CkImapW_fetchFlags(imap,sequenceNum,FALSE); wprintf(L"%d: %s\n",sequenceNum,flags); sequenceNum = sequenceNum + 1; } // The output of the above loop is this: // 1: \Seen // 2: \Seen // 3: \Seen // 4: \Seen // As you can see, nothing is marked as Junk/Spam. This concurs with the list of FLAGS // documented in the response to the SELECT command. Apparently, there is no flag for junk/nonjunk // for outlook.com. Mozilla Thunderbird must be storing additional information about particular // emails locally. (In other words, perhaps the Junk/NonJunk flag is information stored locally // by Thunderbird, and is not a flag set on the server.) wprintf(L"---- Session Log ----\n"); wprintf(L"%s\n",CkImapW_sessionLog(imap)); // The session log looks like this: // ----IMAP REQUEST---- // aaac SELECT "Inbox" // ----IMAP RESPONSE---- // * 4 EXISTS // * 0 RECENT // * FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent) // * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent flags // * OK [UIDVALIDITY 14] UIDVALIDITY value // * OK [UIDNEXT 1719] The next unique identifier value // aaac OK [READ-WRITE] SELECT completed. // ----IMAP REQUEST---- // aaad FETCH 1 (FLAGS) // ----IMAP RESPONSE---- // * 1 FETCH (FLAGS (\Seen)) // aaad OK FETCH completed. // ----IMAP REQUEST---- // aaae FETCH 2 (FLAGS) // ----IMAP RESPONSE---- // * 2 FETCH (FLAGS (\Seen)) // aaae OK FETCH completed. // ----IMAP REQUEST---- // aaaf FETCH 3 (FLAGS) // ----IMAP RESPONSE---- // * 3 FETCH (FLAGS (\Seen)) // aaaf OK FETCH completed. // ----IMAP REQUEST---- // aaag FETCH 4 (FLAGS) // ----IMAP RESPONSE---- // * 4 FETCH (FLAGS (\Seen)) // aaag OK FETCH completed. CkImapW_Disconnect(imap); // -------------------------------------------------------------------------------- // Now let's check GMail.. // Again, I've marked one email as Junk. CkImapW_putKeepSessionLog(imap,FALSE); CkImapW_putSsl(imap,TRUE); CkImapW_putPort(imap,993); success = CkImapW_Connect(imap,L"imap.gmail.com"); if (success != TRUE) { wprintf(L"%s\n",CkImapW_lastErrorText(imap)); CkImapW_Dispose(imap); return; } // Login success = CkImapW_Login(imap,L"myAccount@gmail.com",L"GMAIL-IMAP-PASSWORD"); if (success != TRUE) { wprintf(L"%s\n",CkImapW_lastErrorText(imap)); CkImapW_Dispose(imap); return; } CkImapW_putKeepSessionLog(imap,TRUE); success = CkImapW_SelectMailbox(imap,L"Inbox"); if (success != TRUE) { wprintf(L"%s\n",CkImapW_lastErrorText(imap)); CkImapW_Dispose(imap); return; } selectResponse = CkImapW_lastResponse(imap); wprintf(L"%s\n",selectResponse); // The response to GMail "SELECT Inbox" looks like this: // * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $NotPhishing $Phishing $label1 $label2 $label3 $label4 $label5 Junk NonJunk) // * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $NotPhishing $Phishing $label1 $label2 $label3 $label4 $label5 Junk NonJunk \*)] Flags permitted. // * OK [UIDVALIDITY 3] UIDs valid. // * 46 EXISTS // * 0 RECENT // * OK [UIDNEXT 4147] Predicted next UID. // * OK [HIGHESTMODSEQ 403404] // aaai OK [READ-WRITE] Inbox selected. (Success) sequenceNum = CkImapW_getNumMessages(imap); minSeqNum = 1; if (sequenceNum > 10) { minSeqNum = sequenceNum - 10; } while (sequenceNum >= minSeqNum) { flags = CkImapW_fetchFlags(imap,sequenceNum,FALSE); wprintf(L"%d: %s\n",sequenceNum,flags); sequenceNum = sequenceNum - 1; } // The output (for GMail) of the above loop is this: // 46: Junk \Seen // 45: NonJunk \Answered \Seen // 44: NonJunk \Seen // 43: \Answered \Seen // 42: \Answered \Seen // 41: NonJunk \Seen // 40: NonJunk \Answered \Seen // 39: NonJunk \Seen // 38: NonJunk \Seen // 37: NonJunk \Seen // 36: NonJunk \Seen // As you can see, the email I marked as "Junk" using Mozilla Thunderbird has the Junk flag set. // This concurs with GMail's list of FLAGS. Apparently, since the IMAP server has a "Junk" flag, // Thunderbird set it when I marked the email as Junk. CkImapW_Disconnect(imap); CkImapW_Dispose(imap); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.