Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Add Email Attachment from FTP

Downloads (into memory) a file from an FTP server and adds it as an attachment to an email.

Note: This example requires Chilkat v9.5.0.63 or later.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.BinData,
  Chilkat.Email,
  Chilkat.Ftp2;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  ftp: TFtp2;
  pdfData: TBinData;
  email: TEmail;

begin
  success := False;

  //  Note: This example requires Chilkat v9.5.0.63 or later.

  //  This example assumes Chilkat Ftp2 to have been previously unlocked.
  //  See Unlock Ftp2 for sample code.

  ftp := TFtp2.Create;

  ftp.Hostname := 'www.my-ftp-server.com';
  ftp.Username := 'mFtpLogin';
  ftp.Password := 'myFtpPassword';

  //  Connect to the FTP server.
  success := ftp.ConnectOnly();
  if (success <> True) then
    begin
      WriteLn(ftp.LastErrorText);
      Exit;
    end;

  //  Authenticate with the FTP server.
  success := ftp.LoginAfterConnectOnly();
  if (success <> True) then
    begin
      WriteLn(ftp.LastErrorText);
      Exit;
    end;

  //  Move to the remove directory where our file is located.
  success := ftp.ChangeRemoteDir('qa_data');
  if (success = True) then
    begin
      success := ftp.ChangeRemoteDir('pdf');
    end;
  if (success <> True) then
    begin
      WriteLn(ftp.LastErrorText);
      Exit;
    end;

  //  Download...
  pdfData := TBinData.Create;
  success := ftp.GetFileBd('fishing.pdf',pdfData);
  if (success <> True) then
    begin
      WriteLn(ftp.LastErrorText);
      Exit;
    end;

  ftp.Disconnect();

  //  Create an email object, and add the PDF as an attachment.
  email := TEmail.Create;
  email.Subject := 'Test with PDF attachment.';
  email.Body := 'This is a plain-text body..';

  //  Add the PDF attachment.  (This method call requires Chilkat v9.5.0.63 or later)
  success := email.AddAttachmentBd('fishing.pdf',pdfData,'application/pdf');
  if (success <> True) then
    begin
      WriteLn(email.LastErrorText);
      Exit;
    end;

  //  Save the email and examine with a text editor to see the PDF attachment is present..
  email.SaveEml('qa_output/out.eml');

  WriteLn('Success.');


  ftp.Free;
  pdfData.Free;
  email.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.