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

Example: Email.GetDsnInfo method

See more Email Object Examples

Demonstrates how to call the GetDsnInfo method.

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,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  email: TEmail;
  json: TJsonObject;
  strVal: string;
  reporting_mta: string;
  action: string;
  status: string;
  remote_mta: string;
  x_supplementary_info: string;
  x_display_name: string;
  i: Integer;
  count: Integer;

begin
  success := False;

  email := TEmail.Create;

  success := email.LoadEml('qa_data/eml/sample_multipart_report.eml');
  if (success = False) then
    begin
      WriteLn(email.LastErrorText);
      Exit;
    end;

  json := TJsonObject.Create;
  success := email.GetDsnInfo(json);
  if (success = False) then
    begin
      WriteLn(email.LastErrorText);
      Exit;
    end;

  json.EmitCompact := False;
  WriteLn(json.Emit());

  //  Sample output:

  //  {
  //    "reporting-mta": "dns; Exchange2016.example.com",
  //    "final-recipient": [
  //      "herb.butterworth1247692846@gmail.com"
  //    ],
  //    "action": "failed",
  //    "status": "5.1.1",
  //    "remote-mta": "dns; mx.google.com",
  //    "x-supplementary-info": "<mx.google.com #5.1.1 smtp;550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1  https://support.google.com/mail/?p=NoSuchUser o8-20020a056870968800b001b55816bea9si2188132oaq.70 - gsmtp>",
  //    "x-display-name": "herb.butterworth1247692846@gmail.com"
  //  }

  //  Code for parsing the JSON:

  reporting_mta := json.StringOf('reporting-mta');
  action := json.StringOf('action');
  status := json.StringOf('status');
  remote_mta := json.StringOf('remote-mta');
  x_supplementary_info := json.StringOf('x-supplementary-info');
  x_display_name := json.StringOf('x-display-name');
  i := 0;
  count := json.SizeOfArray('final-recipient');
  while i < count do
    begin
      json.I := i;
      strVal := json.StringOf('final-recipient[i]');
      i := i + 1;
    end;



  email.Free;
  json.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.