Как да преминете през всеки пощенски елемент във всяка папка, Outlook Add-in 2010

Това е, което имам досега (не работи)

private void ScanAllMailItems()
{
    Outlook.Folders folders = _outlookNameSpace.Folders;
    foreach (Outlook.Folder folder in folders)
    {
        foreach (Outlook.MailItem m in folder.Items)
        {
            ScanMailBody(m);
        }
    }
}

Няма изключение, изглежда folder.items винаги е празен. Самата пощенска кутия на Outlook има 10 папки, всяка с между 20-300 имейла


person theUser    schedule 27.02.2014    source източник
comment
Има ли изключение, може ли да обясните какво точно се случва?   -  person Simon    schedule 27.02.2014
comment
Няма изключение, изглежда folder.items винаги е празен.   -  person theUser    schedule 27.02.2014
comment
По памет не мисля, че NameSpace.Folders е правилният начин да получите основната папка на вашата пощенска кутия. Може би погледнете тук и опитайте, както е предложено: stackoverflow.com /questions/861370/   -  person Simon    schedule 27.02.2014
comment
Получавате ли правилни данни в променливата „папки“?   -  person Microsoft DN    schedule 27.02.2014


Отговори (1)


Решено по този начин, благодаря за връзката Саймън.

    private void ScanAllMailItems()
    {
        var theRootFolder = (Outlook.Folder)_outlookNameSpace.DefaultStore.GetRootFolder();
        RecurseThroughFolders(theRootFolder, 0);
    }

    private void RecurseThroughFolders(Outlook.Folder theRootFolder, int depth)
    {
        if (theRootFolder.DefaultItemType != Outlook.OlItemType.olMailItem)
            return;

        foreach (object item in theRootFolder.Items)
        {
            var mailItem = item as Outlook.MailItem;
            if (mailItem != null)
            {
                var mi = mailItem;
                ScanMailBody(mi);
            }
        }

        foreach (Outlook.Folder folder in theRootFolder.Folders)
        {
            RecurseThroughFolders(folder, depth + 1);
        }
    }
person theUser    schedule 27.02.2014
comment
Проверката за != Outlook.OlItemType.olMailItem е хубаво допълнение към примера за MSDN тук: msdn.microsoft.com/en-us/library/office/ff184607.aspx - person jkamdjou; 17.05.2017