2011-11-04 7 views
2

필자는받은 편지함의 항목 수를 생성하고, 항목을 보내고, 연락처 & 캘린더를 작성하는 방법을 마침내 관리했지만 폴더 수에 문제가 있습니다.받은 편지함 폴더 및 항목 수는 어떻게 계산됩니까?

내 사서함에 5 개의 폴더가 만들어지고 각 폴더에는 2 개의 하위 폴더가 만들어졌습니다. 이 코드를 실행하면 15 개의 폴더와 같은 모든 폴더 및 하위 폴더 대신 5 개의 폴더가 계산됩니다.

나는 내가 newb :-)

#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 

감사받은 도움을 여전히 foreach 문 또는 무언가를 추측 만하고있어! Dan

답변

1

Namespace.Folders로 시작하는 모든 폴더를 반복적으로 처리해야합니다. 내 머리 꼭대기에서 벗어남 :

int allitems = CountFolders (ns.Folders);
...
개인 INT CountFolders (폴더의 폴더)
{
    INT C = folders.count;
   의 foreach (폴더 MAPIFolder 폴더)
    {
        C + = CountFolders (folder.Folders);
   }
    return c;
}

+0

안녕하세요 Dmitry! 이 코드 ALMOST는 대우를 받았지만 PST 파일에있는 폴더를 포함하여 모든 폴더를 계산합니다. 기본 사서함이있는 폴더 만 계산하는 방법을 알고 있습니까? 감사! –

+0

Namespace.GetDefaultFolder (olFolderInbox) .Parent.Folders를 사용하여 루트 폴더 컬렉션을 검색하는 경우 기본 저장소의 맨 위에서 시작할 수 있습니다 –

관련 문제