Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Create Non-Multipart Email with XML Body that is an Attachment
See more SMTP Examples
Creates an email where the only body is a binary WAV file. The technique used in the example could be applied to other binary files, such as PDF, MS-WORD docs, Excel docs, etc.Chilkat Pascal (Lazarus/Delphi) Downloads
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.Email,
Chilkat.MailMan;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
xmlBody: string;
email: TEmail;
mailman: TMailMan;
begin
success := False;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// The goal of this example is to create an email that has this MIME format,
// where the body of the email is XML using base64 encoding,
// and the Content-Type and Content-Disposition are set as indicated.
// Date: Wed, 23 Aug 2023 09:01:52 +0200 (CEST)
// From: joe@example1.com
// Subject: [v=EMCS.NL][a=NL****][k=****][s=0]
// To: mary@example2.com
// MIME-Version: 1.0
// Content-Type: application/octet-stream; charset=us-ascii; name=6bd8dfe259b3a42c90a28a82b5fc6e77.txt
// Content-Transfer-Encoding: Base64
// Content-Disposition: attachment; filename=6bd8dfe259b3a42c90a28a82b5fc6e77.txt
// Message-Id: <......>
//
// <multi-line base64 encoded XML here>
success := True;
xmlBody := '<ie:IE801 xmlns:ie="urn:publicid:-:EC:DGTAXUD:EMCS:PHASE4:IE801:V3.01" xmlns:tms="urn:publicid:-:EC:DGTAXUD:EMCS:PHASE4:TMS:V3.01">....</ie:IE801>';
email := TEmail.Create;
// Add subject, TO, FROM, etc.
email.Subject := '[v=EMCS.NL][a=NL****][k=****][s=0]';
email.From := 'joe@example1.com';
success := email.AddTo('Mary','mary@example2.com');
email.Body := xmlBody;
email.AddHeaderField('Content-Transfer-Encoding','Base64');
email.AddHeaderField('Content-Type','application/octet-stream; charset=us-ascii; name=6bd8dfe259b3a42c90a28a82b5fc6e77.txt');
email.AddHeaderField('Content-Disposition','attachment; filename=6bd8dfe259b3a42c90a28a82b5fc6e77.txt');
// Your email is ready to send
mailman := TMailMan.Create;
mailman.SmtpHost := 'smtp.my_mail_server.com';
mailman.SmtpUsername := 'myUsername';
mailman.SmtpPassword := 'myPassword';
mailman.SmtpPort := 465;
mailman.SmtpSsl := True;
mailman.StartTLS := True;
success := mailman.SendEmail(email);
if (success <> True) then
begin
WriteLn(mailman.LastErrorText);
Exit;
end;
success := mailman.CloseSmtpConnection();
if (success <> True) then
begin
WriteLn('Connection to SMTP server not closed cleanly.');
end;
WriteLn('Mail Sent!');
email.Free;
mailman.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.