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
(Perl) Examine Junk/NonJunk Flags on Outlook.com and GMailExamines the Junk and NonJunk FLAGS for IMAP on Outlook.com and GMail.com.
use chilkat(); $imap = chilkat::CkImap->new(); # 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 $imap->put_Ssl(1); $imap->put_Port(993); $success = $imap->Connect("imap-mail.outlook.com"); if ($success != 1) { print $imap->lastErrorText() . "\r\n"; exit; } # Login $success = $imap->Login('myAccount@outlook.com',"OUTLOOK_PASSWORD"); if ($success != 1) { print $imap->lastErrorText() . "\r\n"; exit; } # Begin keeping a log of the session here. $imap->put_KeepSessionLog(1); # Select an IMAP mailbox $success = $imap->SelectMailbox("Inbox"); if ($success != 1) { print $imap->lastErrorText() . "\r\n"; exit; } # 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 = $imap->lastResponse(); print $selectResponse . "\r\n"; # 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 <= $imap->get_NumMessages()) { $flags = $imap->fetchFlags($sequenceNum,0); print $sequenceNum . ": " . $flags . "\r\n"; $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.) print "---- Session Log ----" . "\r\n"; print $imap->sessionLog() . "\r\n"; # 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. $imap->Disconnect(); # -------------------------------------------------------------------------------- # Now let's check GMail.. # Again, I've marked one email as Junk. $imap->put_KeepSessionLog(0); $imap->put_Ssl(1); $imap->put_Port(993); $success = $imap->Connect("imap.gmail.com"); if ($success != 1) { print $imap->lastErrorText() . "\r\n"; exit; } # Login $success = $imap->Login('myAccount@gmail.com',"GMAIL-IMAP-PASSWORD"); if ($success != 1) { print $imap->lastErrorText() . "\r\n"; exit; } $imap->put_KeepSessionLog(1); $success = $imap->SelectMailbox("Inbox"); if ($success != 1) { print $imap->lastErrorText() . "\r\n"; exit; } $selectResponse = $imap->lastResponse(); print $selectResponse . "\r\n"; # 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 = $imap->get_NumMessages(); $minSeqNum = 1; if ($sequenceNum > 10) { $minSeqNum = $sequenceNum - 10; } while ($sequenceNum >= $minSeqNum) { $flags = $imap->fetchFlags($sequenceNum,0); print $sequenceNum . ": " . $flags . "\r\n"; $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. $imap->Disconnect(); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.