Sample code for 30+ languages & platforms
AutoIt

Fetch a Set of POP3 Messages by UIDL

See more POP3 Examples

Demonstrates the Chilkat MailMan.FetchUidlSet method, which retrieves the messages whose UIDLs are listed in a StringTable and appends them to an EmailBundle. The arguments are the UIDL StringTable, headersOnly, numBodyLines, and the EmailBundle. This example fetches two specific messages by UIDL.

Background: This is the efficient way to download a selected subset of a mailbox in one call — exactly the pattern for an incremental client: list the mailbox UIDLs, compare against the ones you've already stored, and fetch only the new UIDLs as a set. It avoids re-downloading messages you already have while still pulling everything new in a single operation.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

;  Demonstrates the MailMan.FetchUidlSet method, which retrieves the messages whose UIDLs are
;  listed in a StringTable and appends them to an EmailBundle.  The arguments are the UIDL
;  StringTable, headersOnly, numBodyLines, and the EmailBundle.  The messages remain on the
;  server.

$oMailman = ObjCreate("Chilkat.MailMan")

;  Configure the POP3 server connection.
$oMailman.MailHost = "pop.example.com"
$oMailman.MailPort = 995
$oMailman.PopSsl = True
$oMailman.PopUsername = "user@example.com"
$oMailman.PopPassword = "myPassword"

;  Build the set of UIDLs to fetch.
$oUidls = ObjCreate("Chilkat.StringTable")
$oUidls.Append("0000000123abcdef")
$oUidls.Append("0000000124abcdef")

;  Fetch the listed messages (full bodies) into a bundle.
;  headersOnly=False (fetch the entire message).
;  Note: numBodyLines only applies when headersOnly is True (it sets how many lines of the
;  body to include along with the headers).  When headersOnly is False, the entire message
;  is fetched and numBodyLines is ignored.
$oBundle = ObjCreate("Chilkat.EmailBundle")

$bSuccess = $oMailman.FetchUidlSet($oUidls,False,0,$oBundle)
If ($bSuccess = False) Then
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
    Exit
EndIf

Local $iN = $oBundle.MessageCount
ConsoleWrite("Fetched " & $iN & " messages." & @CRLF)

$oEmail = ObjCreate("Chilkat.Email")
Local $i
For $i = 0 To $iN - 1
    $bSuccess = $oBundle.EmailAt($i,$oEmail)
    ConsoleWrite($oEmail.Subject & @CRLF)
Next

;  Note: Explicitly connecting/authenticating is optional.  Chilkat MailMan automatically
;  connects and authenticates -- using the property settings above -- whenever a server
;  operation requires it.  Calling the explicit connect/authenticate methods can still be
;  helpful to determine whether a failure occurs while connecting or while authenticating.