Get all mails in outlook from a specific folder

18,822

Solution 1

This should work!!!

MAPIFolder mailsFromThisFolder;

MAPIFolder mainFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

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

public void GetFolders(MAPIFolder folder)
{
    if (folder.Folders.Count == 0)
    {
            if (folder.Name == "Folder Name")
            {
                Console.WriteLine(m.FullFolderPath);
                mailsFromThisFolder = folder;
            }
    }
    else
    {
         foreach (MAPIFolder subFolder in folder.Folders)
         {
              GetFolders(subFolder);
         }
    }
}

Outlook.Items items = mailsFromThisFolder.Items;
foreach (Outlook.MailItem mail in items)
{
    //do someting
}

Solution 2

  1. Logon must come before you do anything else.
  2. Use something like the following

    oFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); oSubfolder = oFolder.Folders.Item("wolfy-server");

Share:
18,822
Wolfy
Author by

Wolfy

Student of Computer Science

Updated on June 09, 2022

Comments

  • Wolfy
    Wolfy almost 2 years

    I would like to get all mails in outlook from a specific folder:

    My folder structure:

    My folder structure

    I find this Code to get all mails in outlook inbox folder (not the inbox in picture!):

    Outlook.Application oApp;
    Outlook._NameSpace oNS;
    Outlook.MAPIFolder oFolder;
    Outlook._Explorer oExp;
    
    oApp = new Outlook.Application();
    oNS = (Outlook._NameSpace)oApp.GetNamespace("MAPI");
    oFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
    oExp = oFolder.GetExplorer(false);
    oNS.Logon(Missing.Value, Missing.Value, false, true);
    
    Outlook.Items items = oFolder.Items;
    foreach (Outlook.MailItem mail in items)
    {
        //do someting
    }
    

    Can someone tell me how to get all mails from a specific folder (like: wolfy-server)?

  • Dmitry Streblechenko
    Dmitry Streblechenko almost 11 years
    There is absolutely no reason to loop through subfolders. Folders.Item takes either an integer index (1 through Count) or the subfolder name
  • Hitesh Purohit
    Hitesh Purohit almost 7 years
    I got below error when i tried "foreach (Outlook.MailItem mail in items) " Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Outlook.MailItem'.