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

Convert Embedded HTML Images to Multipart/Related CID References

See more Email Object Examples

Demonstrates how to convert HTML images that are inline/embedded within the HTML to CID references to multipart/related MIME parts.

Note: This example requires Chilkat v9.5.0.78 or greater.

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

begin
  success := False;

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

  //  This example converts the following email with image data embedded directly in the HTML,
  //  to the MIME shown at the bottom of this page.
  //  If the HTML contains multiple embedded images, the call to email.ConvertInlineImages will convert all of them.

  //  MIME-Version: 1.0
  //  Date: Tue, 30 Apr 2019 11:36:34 +0200
  //  Message-ID: <E5DB5F8A65D671FB4822B22F5309411838F2FC93@PC0VDL0W013>
  //  Content-Type: text/html; charset="windows-1252"
  //  Content-Transfer-Encoding: quoted-printable
  //  X-Priority: 3 (Normal)
  //  From: <admin@chilkatsoft.com>
  //  To: Matt <matt@chilkat.io>
  //  Subject: Test
  //  
  //  <html xmlns=3D"http://www.w3.org/1999/xhtml">
  //  <body><p>
  //  <img src=3D"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA3ADcAAD/2=
  //  wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoK=
  //  BggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=
  //  ...
  //  4zzS3ww+5/8AyR//2Q=3D=3D" width=3D"58" height=3D"66" alt=3D"" style=3D"bord=
  //  er-width:0px;" /></body>
  //  </html>

  email := TEmail.Create;
  success := email.LoadEml('qa_data/eml/embedded_html_image.eml');

  email.ConvertInlineImages();
  WriteLn(email.GetMime());

  //  The MIME after moving the image data to a separate MIME sub-part:

  //  MIME-Version: 1.0
  //  Date: Tue, 30 Apr 2019 11:36:34 +0200
  //  Message-ID: <E5DB5F8A65D671FB4822B22F5309411838F2FC93@PC0VDL0W013>
  //  Content-Type: multipart/related; boundary="------------020808080005060904000806"
  //  X-Priority: 3 (Normal)
  //  From: <admin@chilkatsoft.com>
  //  To: Matt <matt@chilkat.io>
  //  Subject: Test
  //  
  //  --------------020808080005060904000806
  //  Content-Type: text/html; charset=windows-1252
  //  Content-Transfer-Encoding: quoted-printable
  //  
  //  <html xmlns=3D"http://www.w3.org/1999/xhtml">
  //  </head></head><body><p>
  //  <img src=3D"cid:CID-1f73052c-32a7-4abb-8e9d-0afb58c17eed@CHILKATSLICE" widt=
  //  h=3D"58" height=3D"66" alt=3D"" style=3D"border-width:0px;" /></body>
  //  </html>
  //  
  //  
  //  
  //  --------------020808080005060904000806
  //  Content-Type: image/jpeg; name="image_95EA3073134C.jpeg"
  //  Content-Transfer-Encoding: base64
  //  Content-ID: <CID-1f73052c-32a7-4abb-8e9d-0afb58c17eed@CHILKATSLICE>
  //  
  //  /9j/4AAQSkZJRgABAQEA3ADcAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF
  //  BgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK
  //  ...
  //  5bmGF7e42pOwUxrFNEQOcLGw6vX2Yv7NfxbWLYfB67s84vrf/wCLoor8r424ZwGYZkqlSUk+VLRr
  //  /Jn2mS8QYzC0Woxi9eqf+aGr+zX8XUyW8K9/+f8Ag/8AjlO/4Zs+Ln/Qqf8Ak/b/APxyiivkXwPl
  //  H88/vj/8ifUR4zzS3ww+5/8AyR//2Q==
  //  
  //  --------------020808080005060904000806--


  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.