2011-11-04 63 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檢索根文件夾集合,則可以從默認存儲區的頂部開始 –

相關問題