AutoIt
AutoIt
Download and Save Email Attachments (POP3)
See more POP3 Examples
Downloads emails from a POP3 mailbox and saves all attachments.Chilkat AutoIt Downloads
Local $bSuccess = False
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; The mailman object is used for receiving (POP3)
; and sending (SMTP) email.
$oMailman = ObjCreate("Chilkat.MailMan")
; Set the POP3 server's hostname
$oMailman.MailHost = "pop.yourserver.com"
; Set the POP3 login/password.
$oMailman.PopUsername = "***"
$oMailman.PopPassword = "***"
; Copy the all email from the user's POP3 mailbox
; into a bundle object. The email remains on the server.
; FetchAll is a reasonable choice for POP3 maildrops that don't have too many
; emails. For larger mail drops, one might download emails one at a time..
$oBundle = ObjCreate("Chilkat.EmailBundle")
Local $bKeepOnServer = True
Local $bHeadersOnly = False
; Irrelevent because we are NOT downloading headers-only
Local $iNumBodyLines = 0
$bSuccess = $oMailman.FetchAll($bKeepOnServer,$bHeadersOnly,$iNumBodyLines,$oBundle)
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf
; The directory path can be relative or absolute.
; This shows a Windows style directory path. On other operating systems, the path
; would be different..
Local $sDirPath = "c:/myAttachments"
$oEmail = ObjCreate("Chilkat.Email")
Local $iBundleIndex = 0
Local $iNumMessages = $oBundle.MessageCount
While ($iBundleIndex < $iNumMessages)
$oBundle.EmailAt($iBundleIndex,$oEmail)
; Save all attachments to the specified directory.
; The directory is automatically created if it does not yet exist.
$bSuccess = $oEmail.SaveAllAttachments($sDirPath)
If ($bSuccess = False) Then
ConsoleWrite($oEmail.LastErrorText & @CRLF)
Exit
EndIf
; The OverwriteExisting property controls whether already-existing files
; are automatically overwritten. By default, it is set to True so that existing
; files will be overwritten.
; Setting OverwriteExisting = False will cause the attachment-saving methods to generate
; unique filenames if a file with the same name already exists. The actual filename(s)
; saved will be present by calling GetAttachmentFilename for each attachment *after*
; saving.
; For example...
$oEmail.OverwriteExisting = False
$bSuccess = $oEmail.SaveAllAttachments($sDirPath)
If ($bSuccess = False) Then
ConsoleWrite($oEmail.LastErrorText & @CRLF)
Exit
EndIf
Local $iNumAttachments = $oEmail.NumAttachments
Local $iAttachIndex = 0
While ($iAttachIndex < $iNumAttachments)
; If the attachment filename was changed to prevent overwriting,
; GetAttachmentFilename will return the new filename.
ConsoleWrite($oEmail.GetAttachmentFilename($iAttachIndex) & @CRLF)
$iAttachIndex = $iAttachIndex + 1
Wend
; Attachments can also be saved individually.
$iAttachIndex = 0
While ($iAttachIndex < $iNumAttachments)
ConsoleWrite("Original Filename: " & $oEmail.GetAttachmentFilename($iAttachIndex) & @CRLF)
$bSuccess = $oEmail.SaveAttachedFile($iAttachIndex,$sDirPath)
If ($bSuccess = False) Then
ConsoleWrite($oEmail.LastErrorText & @CRLF)
Exit
EndIf
; If OverwriteExisting = True, the saved filename will always equal the original filename,
; unless there are characters present in the filename that are not allowed by Windows,
; such as * ? < > | etc. In those cases the illegal characters are either removed or replaced
; with underscore characters to allow the file to be saved.
ConsoleWrite("Saved Filename: " & $oEmail.GetAttachmentFilename($iAttachIndex) & @CRLF)
$iAttachIndex = $iAttachIndex + 1
Wend
$iBundleIndex = $iBundleIndex + 1
Wend