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

Append Part to MIME

See more MIME Examples

Demonstrates the AppendPart method for adding sub-parts to MIME.

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

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

procedure RunDemo;
var
  success: Boolean;
  ptMime: TMime;
  topLevelMime: TMime;
  ptMime2: TMime;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  //  Create a text/plain part.
  ptMime := TMime.Create;
  ptMime.SetBodyFromPlainText('This is the plain text body');
  WriteLn(ptMime.GetMime());
  WriteLn('****');

  //  The ptMime contains:
  //  ---------------------------------------
  //  	Content-Type: text/plain
  //  	Content-Transfer-Encoding: 7bit
  //  
  //  	This is the plain text body
  //  ---------------------------------------

  //  Start with an empty MIME object...
  topLevelMime := TMime.Create;

  //  Initialize it to a multipart Content-Type.  We'll use multipart/mixed.
  topLevelMime.NewMultipartMixed();

  //  Append the ptMime as a child.
  topLevelMime.AppendPart(ptMime);
  WriteLn(topLevelMime.GetMime());
  WriteLn('****');

  //  The topLevelMime contains:
  //  --------------------------
  //  	Content-Type: multipart/mixed; boundary="------------010907090104040508040404"
  //  
  //  	--------------010907090104040508040404
  //  	Content-Type: text/plain
  //  	Content-Transfer-Encoding: 7bit
  //  
  //  	This is the plain text body
  //  	--------------010907090104040508040404--
  //  

  //  IMPORTANT: A copy of the MIME passed in AppendPart is appended.
  //  Therefore, in this case, changing ptMime does not change the text/plain sub-part in topLevelMime.
  //  For example:
  ptMime.SetBody('this is the new plain text body.');
  //  topLevelMime is unchanged.
  WriteLn(topLevelMime.GetMime());
  WriteLn('****');

  //  To change the content in topLevelMime, we must get the text/plain part.
  //  For example:

  ptMime2 := TMime.Create;
  topLevelMime.PartAt(0,ptMime2);

  ptMime2.SetBody('this is the new plain text body.');
  //  Now topLevelMime is changed.
  WriteLn(topLevelMime.GetMime());


  ptMime.Free;
  topLevelMime.Free;
  ptMime2.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.