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

Outlook -- List Attachments for a Specific Message

See more Outlook Examples

Demonstrates how to list the attachments for a particular email message.

Note: This example requires Chilkat v9.5.0.67 or greater.

This example applies to: Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.com

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

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

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  sbResponse: TStringBuilder;
  messageId: string;
  json: TJsonObject;

begin
  success := False;

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

  http := THttp.Create;

  //  Use your previously obtained access token here:
  //  See the following examples for getting an access token:
  //     Get Microsoft Graph OAuth2 Access Token (Azure AD v2.0 Endpoint).
  //     Get Microsoft Graph OAuth2 Access Token (Azure AD Endpoint).
  //     Refresh Access Token (Azure AD v2.0 Endpoint).
  //     Refresh Access Token (Azure AD Endpoint).

  http.AuthToken := 'MICROSOFT_GRAPH_ACCESS_TOKEN';

  sbResponse := TStringBuilder.Create;

  //  Sends:  GET /users/{user_id | userPrincipalName}/messages/{message_id}/attachments
  //  Note: It is also possible to use the literal string "me" for the current logged-on user.
  //  For example: GET /me/messages/{message_id}/attachments

  http.ClearUrlVars();
  http.SetUrlVar('userPrincipalName','chilkatsoft@outlook.com');

  //  Assume we already have a message ID from previously listing the messages in a folder
  messageId := 'AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQBGAAAAAAAu7cUXL5YOTrdsUIw7-v8FBwBUcG0qWqkmQYqWLHQataQxAACnwqJUAABUcG0qWqkmQYqWLHQataQxAACnwrnOAAA=';
  http.SetUrlVar('message_id',messageId);

  //  Send the request to list the messages.
  success := http.QuickGetSb('https://graph.microsoft.com/v1.0/users/{$userPrincipalName}/messages/{$message_id}/attachments',sbResponse);
  if ((success <> True) and (http.LastStatus = 0)) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  json := TJsonObject.Create;
  json.LoadSb(sbResponse);
  json.EmitCompact := False;

  WriteLn('Status code = ' + http.LastStatus);
  if (http.LastStatus <> 200) then
    begin
      WriteLn(json.Emit());
      WriteLn('Failed.');
    end;

  sbResponse.Clear();
  json.EmitSb(sbResponse);
  sbResponse.WriteFile('qa_output/attachments.txt','utf-8',False);

  WriteLn('OK');


  http.Free;
  sbResponse.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.