AutoIt
AutoIt
Fetch a Chunk of Messages, Tracking Failures
See more IMAP Examples
Demonstrates the Chilkat Imap.FetchChunk2 method, which downloads a run of messages by sequence number and reports which succeeded and which failed. The arguments are the starting sequence number, the count, a MessageSet that receives the failed IDs, a MessageSet that receives the successfully-fetched IDs, and the EmailBundle. This example fetches the first chunk of messages and reports the success and failure counts.
Background: When bulk-downloading a large mailbox, individual messages can occasionally fail to fetch (a corrupt message on the server, a transient error) without failing the whole operation.
FetchChunk2 is designed for that reality: it returns a partial EmailBundle plus two MessageSet objects so your code can log or retry exactly the messages that did not come through, rather than aborting the entire sync.Chilkat AutoIt Downloads
Local $bSuccess = False
; Demonstrates the Imap.FetchChunk2 method, which downloads a run of messages by sequence
; number and reports which succeeded and which failed. The 1st argument is the starting
; sequence number, the 2nd is the count, the 3rd receives the failed IDs, the 4th receives
; the successfully-fetched IDs, and the 5th is the EmailBundle.
$oImap = ObjCreate("Chilkat.Imap")
$oImap.Ssl = True
$oImap.Port = 993
$bSuccess = $oImap.Connect("imap.example.com")
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
$bSuccess = $oImap.Login("user@example.com","myPassword")
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
Local $iNumMessages = $oImap.SelectMailbox("Inbox")
If ($iNumMessages < 0) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
; Fetch messages 1..25 (or fewer if the mailbox is smaller).
Local $iCount = 25
If ($iCount > $iNumMessages) Then
$iCount = $iNumMessages
EndIf
$oFailedSet = ObjCreate("Chilkat.MessageSet")
$oFetchedSet = ObjCreate("Chilkat.MessageSet")
$oBundle = ObjCreate("Chilkat.EmailBundle")
$bSuccess = $oImap.FetchChunk2(1,$iCount,$oFailedSet,$oFetchedSet,$oBundle)
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf
ConsoleWrite("Fetched: " & $oFetchedSet.Count & @CRLF)
ConsoleWrite("Failed: " & $oFailedSet.Count & @CRLF)
$bSuccess = $oImap.Disconnect()
If ($bSuccess = False) Then
ConsoleWrite($oImap.LastErrorText & @CRLF)
Exit
EndIf