Want to enumerate Outlook folders

前端 未结 2 1950
孤独总比滥情好
孤独总比滥情好 2021-01-19 04:05

I\'m looking for some code (C# or VB.NET preferred) to iterate through all folders in an Outlook mailbox and return the names of those folders. I\'m not looking to pop up t

2条回答
  •  [愿得一人]
    2021-01-19 04:49

    This is actually quite easy using VSTO (Visual Studio Tools for Office). First Use VSTO to create an Outlook 2007 add in. Here is some of my experimental code that does this.

       private void RecurseThroughFolders(Outlook.Folder theRootFolder, int depth)
        {
            if ( theRootFolder.DefaultItemType != Outlook.OlItemType.olMailItem ) {
                return;
            }
    
            Console.WriteLine("{0}", theRootFolder.FolderPath);
    
            foreach( Object item in theRootFolder.Items ) {
                if (item.GetType() == typeof( Outlook.MailItem )) {
                    Outlook.MailItem mi = (Outlook.MailItem)item;
                    if (mi.Categories.Length > 0) {
                        WriteLinePrefix(depth);
                        Console.WriteLine("  $ {0}", mi.Categories);
                    }
                }
            }
    
            foreach (Outlook.Folder folder in theRootFolder.Folders) {
                RecurseThroughFolders(folder, depth + 1);
            }
        }
    
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Outlook.Application olApp = new Outlook.Application();
    
        Console.WriteLine("Default Profile = {0}", olApp.DefaultProfileName);
    
        Console.WriteLine("Default Store = {0}", olApp.Session.DefaultStore.DisplayName);
    
        selectExplorers = this.Application.Explorers;
        selectExplorers.NewExplorer += new Outlook.ExplorersEvents_NewExplorerEventHandler( newExplorer_Event );
    
        Outlook.Folder theRootFolder  = (Outlook.Folder) olApp.Session.DefaultStore.GetRootFolder();
        RecurseThroughFolders( theRootFolder, 0 );
    }
    

提交回复
热议问题