Sample code for 30+ languages & platforms
Lazarus Pascal

Add an HTML Alternative Body to an Email

See more Email Object Examples

Demonstrates the Chilkat Email.AddHtmlAlternativeBody method, which adds an HTML alternative body. Combined with a plain-text body, it produces a multipart/alternative email that offers both representations of the same content. This example sets a plain-text body, adds an HTML alternative, and prints the resulting alternative count.

Background: A well-formed HTML email usually ships two versions of the body: a rich HTML version and a plain-text fallback, wrapped in a multipart/alternative container. The receiving client displays whichever it prefers — modern clients show the HTML, while text-only clients (or spam filters and accessibility tools) use the plain text. Providing both improves deliverability and ensures every recipient can read the message.

Chilkat Lazarus Pascal Downloads

Lazarus Pascal
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;

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

procedure RunDemo;
var
  email: TEmail;

begin
  //  Demonstrates the AddHtmlAlternativeBody method, which adds an HTML alternative body to
  //  the email.  Combined with a plain-text body, this produces a multipart/alternative
  //  email that offers both representations.

  email := TEmail.Create;
  email.Subject := 'Plain-text and HTML alternatives';

  //  Start with a plain-text body.
  email.SetTextBody('This is the plain-text version of the message.','text/plain');

  //  Add an HTML alternative, creating a multipart/alternative email.
  email.AddHtmlAlternativeBody('<html><body><b>This is the HTML version.</b></body></html>');

  WriteLn('NumAlternatives = ' + email.NumAlternatives);


  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.