AutoIt
AutoIt
Mark IMAP Email as Read/Unread (Seen/Unseen)
Demonstrates how to mark emails as read or unread.Chilkat AutoIt Downloads
Local $bSuccess = False
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
$oImap = ObjCreate("Chilkat.Imap")
; Connect to an IMAP server.
; Use TLS
$oImap.Ssl = True
$oImap.Port = 993
$bSuccess = $oImap.Connect("imap.example.com")
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; Login
$bSuccess = $oImap.Login("myLogin","myPassword")
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; Select an IMAP mailbox
$bSuccess = $oImap.SelectMailbox("Inbox")
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; Set PeekMode so that downloaded messages are not
; automatically marked as seen.
$oImap.PeekMode = True
; The NumMessages property contains the number of messages
; in the currently selected mailbox.
Local $iNumMsgs = $oImap.NumMessages
If ($iNumMsgs = 0) Then
Exit
EndIf
$oEmail = ObjCreate("Chilkat.Email")
Local $i
For $i = 1 To $iNumMsgs
; Download each email by sequence number (not UID)
$bSuccess = $oImap.FetchEmail(False,$i,False,$oEmail)
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; If desired, mark the email as SEEN. There are two
; ways to do it:
; 1) Set the flag directly by using the sequence number
; Indicate that we are passing a sequence number and
; not a UID:
Local $bIsUid = False
; Set the SEEN flag = 1 to mark the email as SEEN,
; or set it to 0 to mark it as not-seen.
$bSuccess = $oImap.SetFlag($i,$bIsUid,"SEEN",1)
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; 2) Alternatively, we can use the email object.
; When an email is downloaded from the IMAP server
; Chilkat will add a "ckx-imap-uid" header to the email.
; This makes it possible to know the UID associated with
; the email. (This is not the sequence number, which may change
; from session to session, but the UID which does not change.
; The SetMailFlag method is identical to SetFlag, except
; it gets the UID from the ckx-imap-uid header.
; For example:
$bSuccess = $oImap.SetMailFlag($oEmail,"SEEN",1)
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
Next
; Disconnect from the IMAP server.
$bSuccess = $oImap.Disconnect()