![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) Download and Save Email Attachments (POP3)See more POP3 ExamplesDownloads emails from a POP3 mailbox and saves all attachments.Note: This example requires Chilkat v11.0.0 or greater.
load ./chilkat.dll set success 0 # 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. set mailman [new_CkMailMan] # Set the POP3 server's hostname CkMailMan_put_MailHost $mailman "pop.yourserver.com" # Set the POP3 login/password. CkMailMan_put_PopUsername $mailman "***" CkMailMan_put_PopPassword $mailman "***" # 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.. set bundle [new_CkEmailBundle] set keepOnServer 1 set headersOnly 0 # Irrelevent because we are NOT downloading headers-only set numBodyLines 0 set success [CkMailMan_FetchAll $mailman $keepOnServer $headersOnly $numBodyLines $bundle] if {$success == 0} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman delete_CkEmailBundle $bundle exit } # The directory path can be relative or absolute. # This shows a Windows style directory path. On other operating systems, the path # would be different.. set dirPath "c:/myAttachments" set email [new_CkEmail] set bundleIndex 0 set numMessages [CkEmailBundle_get_MessageCount $bundle] while {$bundleIndex < $numMessages} { CkEmailBundle_EmailAt $bundle $bundleIndex $email # Save all attachments to the specified directory. # The directory is automatically created if it does not yet exist. set success [CkEmail_SaveAllAttachments $email $dirPath] if {$success == 0} then { puts [CkEmail_lastErrorText $email] delete_CkMailMan $mailman delete_CkEmailBundle $bundle delete_CkEmail $email exit } # The OverwriteExisting property controls whether already-existing files # are automatically overwritten. By default, it is set to 1 so that existing # files will be overwritten. # Setting OverwriteExisting = 0 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... CkEmail_put_OverwriteExisting $email 0 set success [CkEmail_SaveAllAttachments $email $dirPath] if {$success == 0} then { puts [CkEmail_lastErrorText $email] delete_CkMailMan $mailman delete_CkEmailBundle $bundle delete_CkEmail $email exit } set numAttachments [CkEmail_get_NumAttachments $email] set attachIndex 0 while {$attachIndex < $numAttachments} { # If the attachment filename was changed to prevent overwriting, # GetAttachmentFilename will return the new filename. puts [CkEmail_getAttachmentFilename $email $attachIndex] set attachIndex [expr $attachIndex + 1] } # Attachments can also be saved individually. set attachIndex 0 while {$attachIndex < $numAttachments} { puts "Original Filename: [CkEmail_getAttachmentFilename $email $attachIndex]" set success [CkEmail_SaveAttachedFile $email $attachIndex $dirPath] if {$success == 0} then { puts [CkEmail_lastErrorText $email] delete_CkMailMan $mailman delete_CkEmailBundle $bundle delete_CkEmail $email exit } # If OverwriteExisting = 1, 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. puts "Saved Filename: [CkEmail_getAttachmentFilename $email $attachIndex]" set attachIndex [expr $attachIndex + 1] } set bundleIndex [expr $bundleIndex + 1] } delete_CkMailMan $mailman delete_CkEmailBundle $bundle delete_CkEmail $email |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.