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
(Delphi ActiveX) Download and Save Email Attachments (POP3)See more POP3 ExamplesDownloads emails from a POP3 mailbox and saves all attachments.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var mailman: TChilkatMailMan; bundle: IChilkatEmailBundle; dirPath: WideString; success: Integer; bundleIndex: Integer; numMessages: Integer; email: IChilkatEmail; numAttachments: Integer; attachIndex: Integer; begin // 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. mailman := TChilkatMailMan.Create(Self); // Set the POP3 server's hostname mailman.MailHost := 'pop.yourserver.com'; // Set the POP3 login/password. mailman.PopUsername := '***'; mailman.PopPassword := '***'; // 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 := mailman.CopyMail(); if (mailman.LastMethodSuccess <> 1) then begin Memo1.Lines.Add(mailman.LastErrorText); Exit; end; // The directory path can be relative or absolute. // This shows a Windows style directory path. On other operating systems, the path // would be different.. dirPath := 'c:/myAttachments'; bundleIndex := 0; numMessages := bundle.MessageCount; while (bundleIndex < numMessages) do begin email := bundle.GetEmail(bundleIndex); // Save all attachments to the specified directory. // The directory is automatically created if it does not yet exist. success := email.SaveAllAttachments(dirPath); if (success <> 1) then begin Memo1.Lines.Add(email.LastErrorText); Exit; end; // 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... email.OverwriteExisting := 0; success := email.SaveAllAttachments(dirPath); if (success <> 1) then begin Memo1.Lines.Add(email.LastErrorText); Exit; end; numAttachments := email.NumAttachments; attachIndex := 0; while (attachIndex < numAttachments) do begin // If the attachment filename was changed to prevent overwriting, // GetAttachmentFilename will return the new filename. Memo1.Lines.Add(email.GetAttachmentFilename(attachIndex)); attachIndex := attachIndex + 1; end; // Attachments can also be saved individually. attachIndex := 0; while (attachIndex < numAttachments) do begin Memo1.Lines.Add('Original Filename: ' + email.GetAttachmentFilename(attachIndex)); success := email.SaveAttachedFile(attachIndex,dirPath); if (success <> 1) then begin Memo1.Lines.Add(email.LastErrorText); Exit; end; // 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. Memo1.Lines.Add('Saved Filename: ' + email.GetAttachmentFilename(attachIndex)); attachIndex := attachIndex + 1; end; bundleIndex := bundleIndex + 1; end; end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.