Search code examples
delphicomoutlookole

Retrieving Outlook 'Inbox' and 'Sent' folders in Delphi using OLE


What's the best way to go about extracting Outlook folders from within Delphi? Ideally I'd like to retrieve the Inbox folder and any other folders within it. I don't require the email headers/message just purely the folder names.

Delphi BDS 2006


Solution

  • See here for Outlook's Object Model. Below displays the names of folders in the Inbox:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Outlook, oNameSpace, Inbox: OleVariant;
      i: Integer;
    begin
      try
        Outlook := GetActiveOleObject('Outlook.Application');
      except
        Outlook := CreateOleObject('Outlook.Application');
      end;
      oNameSpace := Outlook.GetNamespace('MAPI');
      oNameSpace.Logon('', '', False, False);   // not sure if this is necessary
      Inbox := oNameSpace.GetDefaultFolder(olFolderInbox);
      for i := 1 to Inbox.Folders.Count do
        ShowMessage(Inbox.Folders[i].Name);
    end;