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 DLL) POP3 to SMTP ForwarderRead a POP3 mailbox and forwards the email to another email address, keeping the recipients in the original email the same.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, MailMan, StringArray; ... procedure TForm1.Button1Click(Sender: TObject); var mailman: HCkMailMan; success: Boolean; saUidls: HCkStringArray; saMime: HCkStringArray; n: Integer; fromAddr: PWideChar; toAddr: PWideChar; bAllOk: Boolean; i: Integer; strMime: PWideChar; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. mailman := CkMailMan_Create(); // Set the POP3 server's hostname CkMailMan_putMailHost(mailman,'pop.example.com'); // Set the POP3 login/password. CkMailMan_putPopUsername(mailman,'MY_LOGIN'); CkMailMan_putPopPassword(mailman,'MY_PASSWORD'); // The the UIDLs for all email in the POP3 mailbox. saUidls := CkMailMan_GetUidls(mailman); if (CkMailMan_getLastMethodSuccess(mailman) = False) then begin Memo1.Lines.Add(CkMailMan__lastErrorText(mailman)); Exit; end; // Download the email from the server. Call FetchMultipleMime // because we don't want to load the emails into email objects. // (We'll delete the emails that are forwarded without error.) // Note: It is not reasonable to call this method for a mailbox containing // a huge number of emails. For large mailboxes, it's better to download // one by one and process each email independently. This way, if a // server or communications error occurs, it's possible to write code // that can resume. saMime := CkMailMan_FetchMultipleMime(mailman,saUidls); if (CkMailMan_getLastMethodSuccess(mailman) = False) then begin CkStringArray_Dispose(saUidls); Memo1.Lines.Add(CkMailMan__lastErrorText(mailman)); Exit; end; // Set the SMTP hostname for sending. CkMailMan_putSmtpHost(mailman,'smtp.example.com'); CkMailMan_putSmtpUsername(mailman,'MY_SMTP_LOGIN'); CkMailMan_putSmtpPassword(mailman,'MY_SMTP_PASSWORD'); n := CkStringArray_getCount(saMime); fromAddr := 'me@example.com'; toAddr := 'recipient@somewhere.com'; bAllOk := True; i := 0; while i < n do begin strMime := CkStringArray__getString(saMime,i); // Forward the email. success := CkMailMan_SendMime(mailman,fromAddr,toAddr,strMime); if (success <> True) then begin bAllOk := False; Memo1.Lines.Add(CkMailMan__lastErrorText(mailman)); // Force loop exit. i := n; end; i := i + 1; end; // Remove the emails in saUidls from the POP3 server. if (bAllOk = True) then begin success := CkMailMan_DeleteMultiple(mailman,saUidls); if (success <> True) then begin Memo1.Lines.Add(CkMailMan__lastErrorText(mailman)); end; end; CkStringArray_Dispose(saMime); CkStringArray_Dispose(saUidls); Memo1.Lines.Add('bAllOk = ' + IntToStr(Ord(bAllOk))); CkMailMan_Dispose(mailman); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.