Как получить папку «Входящие» и количество элементов? - PullRequest
2 голосов
/ 05 ноября 2011

Мне, наконец, удалось выяснить, как создать количество элементов в папке «Входящие», отправленных элементах, календаре и контактах, но у меня проблемы с количеством папок.

Допустим, у меня есть 5 папок, созданных в моем почтовом ящике, и 2 подпапки в каждой папке.Когда я запускаю этот код, он считает 5 папок вместо всех папок и подпапок, что равняется 15 папкам.

Я угадываю оператор foreach или что-то еще, но я все еще новичок: -)

#region Run Item Count

Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;

private void btnRunItemCount_Click(object sender, EventArgs e)
{
    app = new Microsoft.Office.Interop.Outlook.Application();
    ns = app.GetNamespace("MAPI");

    MAPIFolder oInbox = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
    tbInboxItemCount.Text = oInbox.Items.Count.ToString();
    MAPIFolder oSentItems = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
    tbSentMailItemCount.Text = oSentItems.Items.Count.ToString();
    MAPIFolder oCalendar = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
    tbCalendarItemCount.Text = oCalendar.Items.Count.ToString();
    MAPIFolder oContacts = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
    tbContactsItemCount.Text = oContacts.Items.Count.ToString();
    MAPIFolder oFolder = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
    tbFolderItemCount.Text = oInbox.Folders.Count.ToString();
}

#endregion

Спасибо за любую помощь!Dan

1 Ответ

2 голосов
/ 05 ноября 2011

Вам нужно будет рекурсивно обрабатывать все папки, начиная с Namespace.Folders.Сверху головы:

int allitems = CountFolders (ns.Folders);
...
private int CountFolders (папки Folders)
{
int c = папки.count;
foreach (папка MAPIFolder в папках)
{
c + = CountFolders (folder.Folders);
}
return c;
}

...