2014-02-27 34 views
1

這是我這麼遠,(沒有工作)如何通過每一個文件夾中的每個郵件項目迭代,Outlook插件2010

private void ScanAllMailItems() 
{ 
    Outlook.Folders folders = _outlookNameSpace.Folders; 
    foreach (Outlook.Folder folder in folders) 
    { 
     foreach (Outlook.MailItem m in folder.Items) 
     { 
      ScanMailBody(m); 
     } 
    } 
} 

沒有例外,它似乎folder.items總是空的。 outlook郵箱本身有10個文件夾,每個文件夾之間有20-300個郵箱

+1

是否有例外,你能解釋究竟發生了什麼? – Simon

+0

沒有例外,它似乎folder.items總是空的。 – theIrishUser

+3

從內存中,我不認爲NameSpace.Folders是獲取郵箱的根文件夾的正確方法。也許看看這裏,並按建議嘗試:http://stackoverflow.com/questions/861370/want-to-enumerate-outlook-folders – Simon

回答

2

解決這個問題,感謝鏈接Simon。

private void ScanAllMailItems() 
    { 
     var theRootFolder = (Outlook.Folder)_outlookNameSpace.DefaultStore.GetRootFolder(); 
     RecurseThroughFolders(theRootFolder, 0); 
    } 

    private void RecurseThroughFolders(Outlook.Folder theRootFolder, int depth) 
    { 
     if (theRootFolder.DefaultItemType != Outlook.OlItemType.olMailItem) 
      return; 

     foreach (object item in theRootFolder.Items) 
     { 
      var mailItem = item as Outlook.MailItem; 
      if (mailItem != null) 
      { 
       var mi = mailItem; 
       ScanMailBody(mi); 
      } 
     } 

     foreach (Outlook.Folder folder in theRootFolder.Folders) 
     { 
      RecurseThroughFolders(folder, depth + 1); 
     } 
    } 
+0

對於!= Outlook.OlItemType.olMailItem的檢查是MSDN示例的一個很好的補充:https://msdn.microsoft.com/en-us/library/office/ff184607.aspx – user3771957

相關問題