如何获取收件箱文件夹和项目计数?

时间:2011-11-04 22:13:39

标签: c# outlook mapi

我终于设法弄清楚如何创建收件箱,发送物品,日历和物品的物品数量。联系人,但我有文件夹计数的问题。

假设我的邮箱中创建了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

感谢您的任何帮助!丹

1 个答案:

答案 0 :(得分:2)

您需要递归处理以Namespace.Folders开头的所有文件夹。 在我的头顶:

int allitems = CountFolders(ns.Folders);
...
private int CountFolders(文件夹文件夹)
{
int c = folders.count;
foreach(文件夹中的MAPIFolder文件夹)
{
c + = CountFolders(folder.Folders);
}
返回c;
}