Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Get the Email Received Date/Time
See more Email Object Examples
Get's the date/time from the topmost Received header. The date/time of when you received an email may be different than the date/time stored in the Date header field, which if truthful, is the date when the email was sent.The Received header field will look something like this:
Received: from mail.example.com (mail.example.com [99.255.255.99]) by inbound-smtp.us-west-2.amazonaws.com with SMTP id 72ma443vs1g0o6vqd8erojkpss35s0dt32h323o1 for admin@chilkatsoft.com; Wed, 25 Jul 2018 08:04:23 +0000 (UTC)The date/time is the final part delimited by a semicolon.
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.StringTable,
Chilkat.StringBuilder,
Chilkat.Email;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
email: TEmail;
sb: TStringBuilder;
numReplaced: Integer;
st: TStringTable;
begin
success := False;
email := TEmail.Create;
success := email.LoadEml('qa_data/eml/p.eml');
if (success <> True) then
begin
WriteLn(email.LastErrorText);
Exit;
end;
sb := TStringBuilder.Create;
sb.Append(email.GetHeaderField('Received'));
// Replace semicolons with CRLF's
numReplaced := sb.Replace(';',#13#10);
st := TStringTable.Create;
st.AppendFromSb(sb);
if (st.Count = 0) then
begin
WriteLn('Should have at least one line..');
Exit;
end;
// The date/time string is the last line in the string table.
sb.SetString(st.StringAt(st.Count - 1));
sb.Trim();
WriteLn('Received date/time = ' + sb.GetAsString());
email.Free;
sb.Free;
st.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.