Delphi Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
DH Key Exchange
DSA
Email
Email Object
FTP
HTML Conversion
HTTP
IMAP
Encryption
MHT / HTML Email
NTLM
POP3
RSA
S/MIME
SMTP
Socket
Spider
SFTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Amazon S3
Byte Array
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

Type Conversion

 

Article: Understanding COM References in Delphi

Parse MIME Header Fields

Demonstrates how to parse MIME header fields, including Content-Type, Content-Disposition, and Content-Transfer-Encoding.

This example uses a MIME test file located at http://www.chilkatsoft.com/testData/sampleMime2.txt. It contains the following MIME:

Content-Type: multipart/mixed;
 boundary="------------080707010302060306060800"

This is a multi-part message in MIME format.

--------------080707010302060306060800
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

This is the plain-text body.
--------------080707010302060306060800
Content-Disposition: attachment; filename="starfish.gif"
Content-Transfer-Encoding: base64
Content-Type: image/gif; name="starfish.gif"

R0lGODlhIAAgAPcAAP///+/v7/f39+/n5/fv7//39/fn597OzufW1tbGxs69vffe3u/W1salpZQQ
EIQYEJwQCJQYCJwYCM6clL2Ee5wpGIwhEK0YANatpdalnHMYCKUhCJQYAKUYAM6Ec5QhCJwhCPfW
zu/Oxta1rb17a6UhAK0hAPe9rb2Ec7V7a71rUpwpCL0xCJwhAOfOxta9tcatpdallM6cjMaUhK1C
IZwxELU5EK0xCLUxCN61pcacjK1rUrVaOaVKKZxCIZwxCKUxCL05CLUxAM6llO+1nMZzUr1rSrVS
KaVCGK1CGLVCEJQxCK05CLU5CIwpAKUxAK0xAM69tffWxrVrSrVaMbVKGMZKEL1CCLU5AP/v597O
xufGtcallNaljLWEa96ce9aUc717Wq1aMcZjMbVaKbVSIa1KGL1SGJw5CK1CCLVCCMZKCM5KCMZC
APfn3tbGvc57Ss5aGMZSENZaEL1KCM5SCLVCAMZKAPfezvfOte/GrdatlN6cc9aEUr1rOc5jIdZj
GL1SEM5aELVKCMZSCNZaCL1KAOfOvc57Qs5jGNZjEM5aCMZSAN5aAO/OtefGrcZjGM5jEN5rELVS
CMZaCN5jCOdrCM5aAO/Gpc5rGMZjENZrEN5jAOdrAOfe1t6MQtZ7Kd57IdZzGM5rEMZjCNZrCM5j
ANbOxu/Wve+9jPe9hO+1e+etc85zGO+EGMZrENZzEM5rCN5zCO97COdzAO/n3u+1c+ecSt6UQs57
Ie+MIdZ7GOeEGM5zEO+EELVjCOd7CO+ECOd7AO/Ope+tWuelUu+UKeeMGOeEEO+MEOeECO+EAO/G
jO+cKfeUEO+MCO+tSuecMeeUGN6MEOeMCO+UCO+tQuelOe+lMe+lKe+cGOeUEO+cEOeUCN6MAO+U
AOe9c/e1Oe+lId6UEO+cCPe9Qve1Me+lEOecCO+lCOe1Su+1OeelGO+tGPetCPetAO+9Qve1GO+1
EPe9CPe9APf37+fv5/f//+/v9/fv9+fe5+/e5869xufW3t7GzgAAACwAAAAAIAAgAAAI/wABCBxI
sKDBgwgTFgCwMKHDhwyHYWoIsWIBZsdyHaoIcaGbaNQ0ZeBYEROvV0pmCCDp8B4rZaOUcGHpcIEx
aqPMYLjHMcsCAwgxkRv3q8wLnhAdfWpmDRwqAgQFEEvHLlCZNxwfpVmkDJ04dczc3LsXQtq4XWh8
aGH48F49FDUC9UInT941W6luCUOWyQmSLST3eUnChNS4c9SooQuGDNkrIIrA1MqXr0A+AyFC4Kln
kMAQKljotJJGDZklS9PkyEHGLZu1ctbCmWvXThurfAbvHSii5kegxpYqtRpEKFnid/TSneu2LRYh
P/0Q1tJRgYOZV71UL5LEK1KiV68yVf+xgaOKmAZICd5bmA8FEyZQlMjRRAhQGQv4QQSJL8ZLFHwP
6aFIJXNIEkggcgQhwYIlKEFFGDKcEgBCBVCkByC0IAMJGnSAYsUNEmzAgw4HBJBeQisZcAswjqGh
wQeBKGIFFD0ocCJE9diyjTKRLPHBAx/cEAcdgxgx4Vg3HnSPKs4E00sNEYDwgQksQDLJIohMSJIj
ugSTCRA/ILFDCjTckUkrpYiCAEluYCMLJCsoMQUM9gjQRSSL7CLJJjmQxMw3kQChxA78IFULHIK0
MgonXyR5UAHWVBKIEmEcUJAIYxgSSSF94AZRPrgsQgUF0RmUgWpy/LFmRYdMkACAANwrWA8cbAhi
RZ8cjRWro0QEEsQVGTiKkLAM5QNGFWrAQFNLBIzABQPLRktQQAA7

--------------080707010302060306060800--

Download Chilkat MIME ActiveX

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATMIMELib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
mime: CHILKATMIMELib_TLB.IChilkatMime;
success: Integer;
part2: CHILKATMIMELib_TLB.IChilkatMime;
filename: String;
name: String;

begin
mime := CoChilkatMime.Create();

success := mime.UnlockComponent('Anything for 30-day trial.');
if (success = 0) then
  begin
    Memo1.Lines.Add(mime.LastErrorText);
    Exit;
  end;

//  Load the sampleMime2.txt file into the MIME object.
//  (This file is available at http://www.chilkatsoft.com/testData/sampleMime2.txt )

success := mime.LoadMimeFile('sampleMime2.txt');
if (success = 0) then
  begin
    Memo1.Lines.Add(mime.LastErrorText);
    Exit;
  end;

//  The GIF image is the 2nd sub-part located directly under the
//  top-level MIME node.  Indexing begins at 0, therefore the 2nd
//  sub-part is at index 1.

part2 := mime.GetPart(1);

//  -------------------------------
//  Content-Disposition
//  -------------------------------
//  In this example, the Content-Disposition header field
//  contains this value:
//  attachment; filename="starfish.gif"

//  To get the "filename", call GetHeaderFieldAttribute
//  Header field names and attribute names are case insensitive.
filename := part2.GetHeaderFieldAttribute('Content-Disposition','filename');
Memo1.Lines.Add('Filename: ' + filename);

//  Because the "filename" is so often accessed, it is also available
//  by accessing the "Filename" property:
Memo1.Lines.Add('Filename: ' + part2.Filename);

//  The disposition (without attributes) which in this case
//  is the string "attachment" is accessed via the Disposition property:
Memo1.Lines.Add('Disposition: ' + part2.Disposition);

//  To get the full value of the Content-Disposition header field,
//  call GetHeaderField.
Memo1.Lines.Add('Content-Disposition: ' + part2.GetHeaderField('Content-Disposition'));

//  -------------------------------
//  Content-Type
//  -------------------------------
//  In this example, the Content-Type header field
//  contains this value:
//  image/gif; name="starfish.gif"

//  To get the "name", call GetHeaderFieldAttribute
name := part2.GetHeaderFieldAttribute('Content-Type','name');
Memo1.Lines.Add('Content-Type name: ' + name);

//  Because the "name" is so often accessed, it is also available
//  by accessing the "Name" property:
Memo1.Lines.Add('Content-Type name: ' + part2.Name);

//  The content-type without attributes is available in the
//  ContentType property:
Memo1.Lines.Add('Content-Type: ' + part2.ContentType);

//  To get the full value of the Content-Type header field,
//  call GetHeaderField.
Memo1.Lines.Add('Content-Type: ' + part2.GetHeaderField('Content-Type'));

//  -------------------------------
//  Content-Transfer-Encoding
//  -------------------------------

//  The Encoding property contains the value of the
//  Content-Transfer-Encoding property.
//  Calling GetHeaderField("Content-Transfer-Encoding") is
//  equivalent to accessing the Encoding property:
Memo1.Lines.Add('Content-Transfer-Encoding: '
     + part2.Encoding);
Memo1.Lines.Add('Content-Transfer-Encoding: '
     + part2.GetHeaderField('Content-Transfer-Encoding'));

ShowMessage('Finished.');


end;

 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser