AutoIt
AutoIt
Examine Junk/NonJunk Flags on Outlook.com and GMail
See more IMAP Examples
Examines the Junk and NonJunk FLAGS for IMAP on Outlook.com and GMail.com.Chilkat AutoIt Downloads
Local $bSuccess = False
$oImap = ObjCreate("Chilkat.Imap")
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; Connect to the outlook.com IMAP server.
; We'll do the same for GMail below..
; Use TLS
$oImap.Ssl = True
$oImap.Port = 993
$bSuccess = $oImap.Connect("imap-mail.outlook.com")
If ($bSuccess <> True) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; Login
$bSuccess = $oImap.Login("myAccount@outlook.com","OUTLOOK_PASSWORD")
If ($bSuccess <> True) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; Begin keeping a log of the session here.
$oImap.KeepSessionLog = True
; Select an IMAP mailbox
$bSuccess = $oImap.SelectMailbox("Inbox")
If ($bSuccess <> True) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
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.
Local $selectResponse = $oImap.LastResponse
ConsoleWrite($selectResponse & @CRLF)
; 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.
Local $iSequenceNum = 1
While $iSequenceNum <= $oImap.NumMessages
Local $sFlags = $oImap.FetchFlags($iSequenceNum,False)
ConsoleWrite($iSequenceNum & ": " & $sFlags & @CRLF)
$iSequenceNum = $iSequenceNum + 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.)
ConsoleWrite("---- Session Log ----" & @CRLF)
ConsoleWrite($oImap.SessionLog & @CRLF)
; 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.
$oImap.Disconnect()
; --------------------------------------------------------------------------------
; Now let's check GMail..
; Again, I've marked one email as Junk.
$oImap.KeepSessionLog = False
$oImap.Ssl = True
$oImap.Port = 993
$bSuccess = $oImap.Connect("imap.gmail.com")
If ($bSuccess <> True) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; Login
$bSuccess = $oImap.Login("myAccount@gmail.com","GMAIL-IMAP-PASSWORD")
If ($bSuccess <> True) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
$oImap.KeepSessionLog = True
$bSuccess = $oImap.SelectMailbox("Inbox")
If ($bSuccess <> True) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
$selectResponse = $oImap.LastResponse
ConsoleWrite($selectResponse & @CRLF)
; 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)
$iSequenceNum = $oImap.NumMessages
Local $iMinSeqNum = 1
If ($iSequenceNum > 10) Then
$iMinSeqNum = $iSequenceNum - 10
EndIf
While $iSequenceNum >= $iMinSeqNum
Local $sFlags = $oImap.FetchFlags($iSequenceNum,False)
ConsoleWrite($iSequenceNum & ": " & $sFlags & @CRLF)
$iSequenceNum = $iSequenceNum - 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.
$oImap.Disconnect()