![]() |
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
(Visual FoxPro) 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.
LOCAL lnSuccess LOCAL loMailman LOCAL loBundle LOCAL lnKeepOnServer LOCAL lnHeadersOnly LOCAL lnNumBodyLines LOCAL lcDirPath LOCAL loEmail LOCAL lnBundleIndex LOCAL lnNumMessages LOCAL lnNumAttachments LOCAL lnAttachIndex lnSuccess = 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. loMailman = CreateObject('Chilkat.MailMan') * Set the POP3 server's hostname loMailman.MailHost = "pop.yourserver.com" * Set the POP3 login/password. loMailman.PopUsername = "***" loMailman.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.. loBundle = CreateObject('Chilkat.EmailBundle') lnKeepOnServer = 1 lnHeadersOnly = 0 * Irrelevent because we are NOT downloading headers-only lnNumBodyLines = 0 lnSuccess = loMailman.FetchAll(lnKeepOnServer,lnHeadersOnly,lnNumBodyLines,loBundle) IF (lnSuccess = 0) THEN ? loMailman.LastErrorText RELEASE loMailman RELEASE loBundle CANCEL 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.. lcDirPath = "c:/myAttachments" loEmail = CreateObject('Chilkat.Email') lnBundleIndex = 0 lnNumMessages = loBundle.MessageCount DO WHILE (lnBundleIndex < lnNumMessages) loBundle.EmailAt(lnBundleIndex,loEmail) * Save all attachments to the specified directory. * The directory is automatically created if it does not yet exist. lnSuccess = loEmail.SaveAllAttachments(lcDirPath) IF (lnSuccess = 0) THEN ? loEmail.LastErrorText RELEASE loMailman RELEASE loBundle RELEASE loEmail CANCEL ENDIF * 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... loEmail.OverwriteExisting = 0 lnSuccess = loEmail.SaveAllAttachments(lcDirPath) IF (lnSuccess = 0) THEN ? loEmail.LastErrorText RELEASE loMailman RELEASE loBundle RELEASE loEmail CANCEL ENDIF lnNumAttachments = loEmail.NumAttachments lnAttachIndex = 0 DO WHILE (lnAttachIndex < lnNumAttachments) * If the attachment filename was changed to prevent overwriting, * GetAttachmentFilename will return the new filename. ? loEmail.GetAttachmentFilename(lnAttachIndex) lnAttachIndex = lnAttachIndex + 1 ENDDO * Attachments can also be saved individually. lnAttachIndex = 0 DO WHILE (lnAttachIndex < lnNumAttachments) ? "Original Filename: " + loEmail.GetAttachmentFilename(lnAttachIndex) lnSuccess = loEmail.SaveAttachedFile(lnAttachIndex,lcDirPath) IF (lnSuccess = 0) THEN ? loEmail.LastErrorText RELEASE loMailman RELEASE loBundle RELEASE loEmail CANCEL ENDIF * 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. ? "Saved Filename: " + loEmail.GetAttachmentFilename(lnAttachIndex) lnAttachIndex = lnAttachIndex + 1 ENDDO lnBundleIndex = lnBundleIndex + 1 ENDDO RELEASE loMailman RELEASE loBundle RELEASE loEmail |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.