2011-11-04 73 views
2

我终于成功了解如何创建收件箱,发送的项目,日历&联系人的项目计数,但我遇到了文件夹计数问题。如何获得收件箱文件夹和项目数量?

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

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

int allitems = CountFolders(ns.Folders);
...
私人INT CountFolders(文件夹的文件夹)
{
    INT C = folders.count;
   的foreach(在文件夹中文件夹MAPIFolder)
    {
        C + = CountFolders(folder.Folders);
   }
    return c;
}

+0

嗨德米特里!此代码几乎工作,但是,它计数包括我的PST文件中的所有文件夹。你知道如何使用默认邮箱计数文件夹吗?谢谢! –

+0

如果使用Namespace.GetDefaultFolder(olFolderInbox).Parent.Folders检索根文件夹集合,则可以从默认存储区的顶部开始 –

相关问题