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

Auto-Generate or Explicitly Specify the Message-ID Email Header

Demonstrates how to auto-generate or explicitly specify the Message-ID header field.

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.Email,
  Chilkat.MailMan;

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

procedure RunDemo;
var
  success: Boolean;
  email: TEmail;
  mailman: TMailMan;
  mimeStr: string;

begin
  success := False;

  email := TEmail.Create;

  email.Subject := 'test';
  email.Body := 'test';
  email.AddTo('Joe','joe@example1.com');
  email.From := 'mary@example2.com';

  mailman := TMailMan.Create;

  //  When the mailman sends email, it renders the email to be sent,
  //  and then sends the rendered MIME.

  //  Instead of actually sending the email, this example will render
  //  to MIME so we can see what would be sent..

  //  We can explicitly set the Message-ID like this:
  mailman.AutoGenMessageId := False;
  email.AddHeaderField('Message-ID','<xyz123@abc>');

  mimeStr := mailman.RenderToMime(email);
  WriteLn(mimeStr);

  //  This is what we get:

  //  MIME-Version: 1.0
  //  Date: Mon, 20 Jul 2020 17:20:09 -0500
  //  Message-ID: <xyz123@abc>
  //  Content-Type: text/plain; charset=us-ascii; format=flowed
  //  Content-Transfer-Encoding: 7bit
  //  X-Priority: 3 (Normal)
  //  Subject: test
  //  To: Joe <joe@example1.com>
  //  From: mary@example2.com
  //  
  //  test

  WriteLn('--------');

  //  If we auto-generate...
  mailman.AutoGenMessageId := True;
  mimeStr := mailman.RenderToMime(email);
  WriteLn(mimeStr);

  //  We get this:

  //  MIME-Version: 1.0
  //  Date: Mon, 20 Jul 2020 17:21:20 -0500
  //  Message-ID: <04EDE096BBFE484967F6398A973B0FCF6EA09A44@CHILKATSLICE>
  //  Content-Type: text/plain; charset=us-ascii; format=flowed
  //  Content-Transfer-Encoding: 7bit
  //  X-Priority: 3 (Normal)
  //  Subject: test
  //  To: Joe <joe@example1.com>
  //  From: mary@example2.com
  //  
  //  test


  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.