12

I have been trying to figure out how to get a list of all outlook folders for quite some time now, but can only get a list of the default folders (i.e. Inbox, outbox, sent items, deleted items, etc...). What if I have personal or custom folders that I have created? For instance, if I add a folder to outlook called "Receipts", this would not be a default folder and would not show up under the "default folders". How would I access this folder using Microsoft.Office.Interop.Outlook in c#.

I am trying to create a way to automatically download certain new messages into a spreadsheet from any given folder. I figured if I can get a list of all folders then I can only get the messages from the chosen folders.

Outlook._Folders oFolders;          
Outlook.MAPIFolder oPublicFolder = olNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolder‌​Inbox).Parent;
foreach (Outlook.MAPIFolder Folder in oFolders) 
SliverNinja - MSFT
  • 31,051
  • 11
  • 110
  • 173
mtlca401
  • 1,413
  • 4
  • 16
  • 24
  • 1
    What does your code look like now that only gets some of the folders? – sarnold May 03 '12 at 01:57
  • Well, I tried posting my code but I am limited. Basically, it boils down to this (Moderators, can you edit this?): Microsoft.Office.Interop.Outlook._Folders oFolders; Microsoft.Office.Interop.Outlook.MAPIFolder oPublicFolder = olNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Parent;foreach (Microsoft.Office.Interop.Outlook.MAPIFolder Folder in oFolders) This is not my exact code, only a condensed version that I copied (sorry). – mtlca401 May 03 '12 at 02:01

2 Answers2

14

This should print out all the folders in your outlook including your public folders.

foreach (MAPIFolder folder in olNS.Folders)
{
    GetFolders(folder);
}

public void GetFolders(MAPIFolder folder)
{
    if (folder.Folders.Count == 0)
    {
         Console.WriteLine(folder.FullFolderPath);
    }
    else
    {
         foreach (MAPIFolder subFolder in folder.Folders)
         {
              GetFolders(subFolder);
         }
    }
}
BrainPicker
  • 417
  • 4
  • 13
  • 1
    The above answer is almost correct. But if a folder contains subfolders then that folder is not shown. I recommend to put the WriteLine code above the if. Then it shows all folders also folders which contain subfolders. – Edgar May 17 '18 at 03:59
1

See on MSDN "How to: Enumerate Folders": http://msdn.microsoft.com/en-us/library/ff184607.aspx