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

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

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

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.