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

Create Email with Non-Standard Binary Body

Creates an email where the only body is a binary WAV file. The technique used in the example could be applied to other binary files, such as PDF, MS-WORD docs, Excel docs, etc.

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

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

procedure RunDemo;
var
  success: Boolean;
  mime: TMime;
  strMime: string;
  email: TEmail;

begin
  success := False;

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

  mime := TMime.Create;

  success := mime.SetBodyFromFile('VoiceMessage.wav');
  if (success = False) then
    begin
      WriteLn(mime.LastErrorText);
      Exit;
    end;

  //  The MIME has this header:
  //  Content-Disposition: attachment;
  //  	 filename="VoiceMessage.wav"
  //  Content-Transfer-Encoding: base64
  //  Content-Type: audio/x-wav;
  //  	name="VoiceMessage.wav"

  //  We don't want the content-disposition to be an
  //  attachment -- otherwise the email object will self-correct
  //  and put it in a multipart/mixed format...
  mime.Disposition := '';
  mime.Filename := '';

  strMime := mime.GetMime();
  WriteLn(strMime);

  //  Now load it into an email object:
  email := TEmail.Create;
  success := email.SetFromMimeText(strMime);
  if (success = False) then
    begin
      WriteLn(email.LastErrorText);
      Exit;
    end;

  //  Add subject, TO, FROM, etc.
  email.Subject := 'This is a test';
  email.From := 'support@chilkatsoft.com';
  success := email.AddTo('Matt','matt@chilkatsoft.com');

  //  Your email is ready to send.
  //  (but for this example, we'll simply save it to a file...)
  success := email.SaveEml('email.eml');
  if (success = False) then
    begin
      WriteLn(email.LastErrorText);
      Exit;
    end;

  WriteLn('OK!');


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