Sample code for 30+ languages & platforms
Delphi DLL

Save a MIME Body to a File

See more MIME Examples

Demonstrates how to save a MIME body to a file. The MIME data file used in this example is available at MIME Sample File.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Mime;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
mime: HCkMime;
pTxt: HCkMime;
mpRelated: HCkMime;
pHtml: HCkMime;
pJpg: HCkMime;

begin
success := False;

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

mime := CkMime_Create();

// The contents of this MIME file are shown below, 
// and is also available at https://www.chilkatsoft.com/sampleMime.txt
success := CkMime_LoadMimeFile(mime,'qa_data/mime/sampleMime.txt');
if (success = False) then
  begin
    Memo1.Lines.Add(CkMime__lastErrorText(mime));
    Exit;
  end;

// The MIME used in this example has the following nested structure
// 
// multipart/alternative
//     text/plain
//     multipart/related
//         text/html
//         image/jpeg
// 

// This example will save each of the non-multipart parts.
// It will create three files -- a .txt, .html, and .jpg.

// Save the body of the text/plain part.

pTxt := CkMime_Create();
success := CkMime_PartAt(mime,0,pTxt);
if (success = False) then
  begin
    Memo1.Lines.Add(CkMime__lastErrorText(mime));
    Exit;
  end;

CkMime_SaveBody(pTxt,'qa_output/textPart.txt');

// Save the HTML part.

mpRelated := CkMime_Create();
success := CkMime_PartAt(mime,1,mpRelated);
if (success = False) then
  begin
    Memo1.Lines.Add(CkMime__lastErrorText(mime));
    Exit;
  end;

pHtml := CkMime_Create();
success := CkMime_PartAt(mpRelated,0,pHtml);
if (success = False) then
  begin
    Memo1.Lines.Add(CkMime__lastErrorText(mpRelated));
    Exit;
  end;

CkMime_SaveBody(pHtml,'qa_output/htmlPart.html');

// Save the JPG binary data.  (The data is automatically base64 decoded prior to saving.)

pJpg := CkMime_Create();
success := CkMime_PartAt(mpRelated,1,pJpg);
if (success = False) then
  begin
    Memo1.Lines.Add(CkMime__lastErrorText(mpRelated));
    Exit;
  end;

CkMime_SaveBody(pJpg,'qa_output/jpgPart.jpg');

// --------------------------------------------------------------
// --------------------------------------------------------------
// The MIME sample file loaded at the beginning of this example
// contains the following MIME:

// Subject: Test email.
// Content-Type: multipart/alternative;
// 	boundary="------------DB171738719FB06D67DEBAA0"
// MIME-Version: 1.0
// 
// --------------DB171738719FB06D67DEBAA0
// Content-Type: text/plain; charset="utf-8"; format=flowed
// Content-Transfer-Encoding: 7bit
// 
// This is a test.
// 
// --------------DB171738719FB06D67DEBAA0
// Content-Type: multipart/related;
// 	boundary="------------A940F1230E6F0105F03DB2CB"
// 
// --------------A940F1230E6F0105F03DB2CB
// Content-Type: text/html; charset="utf-8"
// Content-Transfer-Encoding: 8bit
// 
// <html><head>
// <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
//   </head>
//   <body bgcolor="#FFFFFF" text="#000000">
//     <p>This is a test.&nbsp; <img src="cid:part1.E16AE3B4.1505C436@chilkatsoft.com" height="20" width="20"></p>
//   </body>
// </html>
// 
// --------------A940F1230E6F0105F03DB2CB
// Content-Type: image/jpeg; name="starfish20.jpg"
// Content-Transfer-Encoding: base64
// Content-ID: <part1.E16AE3B4.1505C436@chilkatsoft.com>
// Content-Disposition: inline; filename="starfish20.jpg"
// 
// /9j/4AAQSkZJRgABAQEASABIAAD//gAmRmlsZSB3cml0dGVuIGJ5IEFkb2JlIFBob3Rvc2hvcD8g
// NC4w/9sAQwAQCwwODAoQDg0OEhEQExgoGhgWFhgxIyUdKDozPTw5Mzg3QEhcTkBEV0U3OFBtUVdf
// YmdoZz5NcXlwZHhcZWdj/9sAQwEREhIYFRgvGhovY0I4QmNjY2NjY2NjY2NjY2NjY2NjY2NjY2Nj
// Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Nj/8IAEQgAFAAUAwERAAIRAQMRAf/EABcAAAMBAAAA
// AAAAAAAAAAAAAAIDBAX/xAAYAQADAQEAAAAAAAAAAAAAAAABAgMEAP/aAAwDAQACEAMQAAAB2kZY
// NNEijWKddfTmLgALWH//xAAbEAACAgMBAAAAAAAAAAAAAAABAgMRAAQSE//aAAgBAQABBQL0XqN+
// pM2aqJGMiqFFCyg7z//EABwRAAICAgMAAAAAAAAAAAAAAAERAAIQIQMSUf/aAAgBAwEBPwHqU5aq
// Axx+y1tMQl4elj//xAAcEQEAAQUBAQAAAAAAAAAAAAABEQACEBIhA1H/2gAIAQIBAT8B3Bhqy7Zc
// enyiwmGgDhiOzj//xAAdEAABAwUBAAAAAAAAAAAAAAABAAIREBIhIkFR/9oACAEBAAY/ArZyn+Cg
// xtxWuJaoCnqDuin/xAAcEAABBAMBAAAAAAAAAAAAAAABABEhYRAxQVH/2gAIAQEAAT8hkEwPUUR9
// DYfE4nxtRpIkBTsayuALIiuY/9oADAMBAAIAAwAAABDWPTsf/8QAGhEAAwADAQAAAAAAAAAAAAAA
// AAEREDFBIf/aAAgBAwEBPxC0DVPcWm+Ce4OesrkE6bjH/8QAGBEBAQEBAQAAAAAAAAAAAAAAAREA
// QRD/2gAIAQIBAT8QahMiOc8YgSrnTY3ELclHXn//xAAcEAEBAAIDAQEAAAAAAAAAAAABEQAhMUFx
// EFH/2gAIAQEAAT8Qn3igmSZSj+c4N4zapMy9IjFV98wncN2iuLFsCEbDGxQkI6RO/n//2Q==
// 
// --------------A940F1230E6F0105F03DB2CB--
// 
// --------------DB171738719FB06D67DEBAA0--
// 

CkMime_Dispose(mime);
CkMime_Dispose(pTxt);
CkMime_Dispose(mpRelated);
CkMime_Dispose(pHtml);
CkMime_Dispose(pJpg);

end;