Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... 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.
load ./chilkat.dll # 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. # CopyMail 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.. # bundle is a CkEmailBundle set bundle [CkMailMan_CopyMail $mailman] if {[CkMailMan_get_LastMethodSuccess $mailman] != 1} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman 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 bundleIndex 0 set numMessages [CkEmailBundle_get_MessageCount $bundle] # email is a CkEmail while {$bundleIndex < $numMessages} { set email [CkEmailBundle_GetEmail $bundle $bundleIndex] # 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 != 1} then { puts [CkEmail_lastErrorText $email] delete_CkMailMan $mailman 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 != 1} then { puts [CkEmail_lastErrorText $email] delete_CkMailMan $mailman 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 != 1} then { puts [CkEmail_lastErrorText $email] delete_CkMailMan $mailman 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] } delete_CkEmail $email set bundleIndex [expr $bundleIndex + 1] } delete_CkEmailBundle $bundle delete_CkMailMan $mailman |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.