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
(PureBasic) Examine Junk/NonJunk Flags on Outlook.com and GMailExamines the Junk and NonJunk FLAGS for IMAP on Outlook.com and GMail.com.
IncludeFile "CkImap.pb" Procedure ChilkatExample() imap.i = CkImap::ckCreate() If imap.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; 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 CkImap::setCkSsl(imap, 1) CkImap::setCkPort(imap, 993) success.i = CkImap::ckConnect(imap,"imap-mail.outlook.com") If success <> 1 Debug CkImap::ckLastErrorText(imap) CkImap::ckDispose(imap) ProcedureReturn EndIf ; Login success = CkImap::ckLogin(imap,"myAccount@outlook.com","OUTLOOK_PASSWORD") If success <> 1 Debug CkImap::ckLastErrorText(imap) CkImap::ckDispose(imap) ProcedureReturn EndIf ; Begin keeping a log of the session here. CkImap::setCkKeepSessionLog(imap, 1) ; Select an IMAP mailbox success = CkImap::ckSelectMailbox(imap,"Inbox") If success <> 1 Debug CkImap::ckLastErrorText(imap) CkImap::ckDispose(imap) ProcedureReturn EndIf ; 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.s = CkImap::ckLastResponse(imap) Debug 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.i = 1 While sequenceNum <= CkImap::ckNumMessages(imap) flags.s = CkImap::ckFetchFlags(imap,sequenceNum,0) Debug Str(sequenceNum) + ": " + flags sequenceNum = sequenceNum + 1 Wend ; 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.) Debug "---- Session Log ----" Debug CkImap::ckSessionLog(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. CkImap::ckDisconnect(imap) ; -------------------------------------------------------------------------------- ; Now let's check GMail.. ; Again, I've marked one email as Junk. CkImap::setCkKeepSessionLog(imap, 0) CkImap::setCkSsl(imap, 1) CkImap::setCkPort(imap, 993) success = CkImap::ckConnect(imap,"imap.gmail.com") If success <> 1 Debug CkImap::ckLastErrorText(imap) CkImap::ckDispose(imap) ProcedureReturn EndIf ; Login success = CkImap::ckLogin(imap,"myAccount@gmail.com","GMAIL-IMAP-PASSWORD") If success <> 1 Debug CkImap::ckLastErrorText(imap) CkImap::ckDispose(imap) ProcedureReturn EndIf CkImap::setCkKeepSessionLog(imap, 1) success = CkImap::ckSelectMailbox(imap,"Inbox") If success <> 1 Debug CkImap::ckLastErrorText(imap) CkImap::ckDispose(imap) ProcedureReturn EndIf selectResponse = CkImap::ckLastResponse(imap) Debug 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 = CkImap::ckNumMessages(imap) minSeqNum.i = 1 If sequenceNum > 10 minSeqNum = sequenceNum - 10 EndIf While sequenceNum >= minSeqNum flags.s = CkImap::ckFetchFlags(imap,sequenceNum,0) Debug Str(sequenceNum) + ": " + flags sequenceNum = sequenceNum - 1 Wend ; 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. CkImap::ckDisconnect(imap) CkImap::ckDispose(imap) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.