Sample code for 30+ languages & platforms
Lazarus Pascal

Count the Attached Messages in an Email

See more Email Object Examples

Demonstrates the read-only Chilkat Email.NumAttachedMessages property, which is the number of embedded emails represented by message/rfc822 MIME parts. These are counted separately from ordinary attachments and related items, and their indexes are zero-based. This example builds an inner email, attaches it to an outer email as a nested message, and prints the count.

Background: When you "forward as attachment," many mail clients embed the original message as a complete nested email rather than quoting its text. In MIME this appears as a message/rfc822 part — an entire email (its own headers and body) tucked inside the carrier message. Chilkat distinguishes three kinds of enclosed content: ordinary attachments (NumAttachments), inline related items (NumRelatedItems), and these nested messages (NumAttachedMessages). Use GetAttachedEmail to pull an embedded message into its own Email object.

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
  success: Boolean;
  innerEmail: TEmail;
  email: TEmail;

begin
  success := False;

  //  Demonstrates the read-only Email.NumAttachedMessages property, which is the
  //  number of embedded emails (message/rfc822 MIME parts) contained in the email.

  //  Create an inner email that we'll attach as a complete nested message.
  innerEmail := TEmail.Create;
  innerEmail.Subject := 'I am an attached message';
  innerEmail.Body := 'This entire email is nested inside another email.';
  innerEmail.From := 'alice@example.com';
  innerEmail.AddTo('Bob','bob@example.com');

  //  Create the outer email and attach the inner email directly as a
  //  message/rfc822 part.  AttachEmail attaches a copy of the inner email.
  email := TEmail.Create;
  email.Subject := 'Outer email with an attached message';
  email.Body := 'See the attached email.';
  success := email.AttachEmail(innerEmail);

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



  innerEmail.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.