Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Parsing a Multipart/Digest Email
See more Email Object Examples
This example demonstrates how to parse a multipart/digest email. An email parsed by this sample could have a MIME structure as follows:
multipart/mixed
text/plain
text/plain
multipart/digest
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
message/rfc822
text/plain
Chilkat Pascal (Lazarus/Delphi) Downloads
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;
emlPath: string;
email: TEmail;
numDigests: Integer;
eDigest: TEmail;
i: Integer;
m: string;
begin
success := False;
emlPath := 'qa_data/eml/multipart_digest.eml';
email := TEmail.Create;
// For this example, we'll load the email from a .eml.
// The email could alternatively be loaded as a result of downloading from an IMAP or POP3 server..
success := email.LoadEml(emlPath);
if (success = False) then
begin
WriteLn(email.LastErrorText);
Exit;
end;
numDigests := email.NumDigests;
WriteLn('num digests = ' + numDigests);
eDigest := TEmail.Create;
i := 0;
while i < numDigests do
begin
email.GetDigestEmail(i,eDigest);
WriteLn(i + ':' + eDigest.FromAddress + ', ' + eDigest.Subject);
m := eDigest.GetHeaderField('Message');
if (eDigest.LastMethodSuccess = True) then
begin
WriteLn(' Message = ' + m);
end;
i := i + 1;
end;
email.Free;
eDigest.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.