2017-07-25 42 views
0

我想使用下面的代碼來過濾掉未讀的outlook郵件,但是我想對最近的N個Outlook.Items.App應用這個限制,但是我找不到任何這樣的方法。如何在最近的N個Outlook.Items上應用過濾器並在過濾後獲取Outlook.Items?

Outlook.Explorer currExplorer = null; 
Outlook.Folder currFolder = null; 
Outlook.Items folderItems = null; 
Outlook.Items restrictedItems = null; 
Outlook.MailItem mail = null; 
Outlook.Attachments attachments = null; 
int attachmentCount = 0; 

try 
{ 

    currExplorer = OutlookApp.ActiveExplorer(); 
    currFolder = currExplorer.CurrentFolder as Outlook.Folder; 
    if (currFolder.DefaultItemType == Outlook.OlItemType.olMailItem) 
    { 
     folderItems = currFolder.Items; 
     restrictedItems = folderItems.Restrict("[Unread]=true"); 


     for (int i = 1; i <= restrictedItems.Count; i++) 
     { 
      mail = restrictedItems[i] as Outlook.MailItem; 
      if (mail != null) 
      { 
       attachments = mail.Attachments; 
       attachmentCount += attachments.Count; 
       Marshal.ReleaseComObject(attachments); 
       Marshal.ReleaseComObject(mail); 
      } 
     } 

    } 

} 
+0

https://stackoverflow.com/a/43622710/4539709 – 0m3r

回答

0

您需要使用Restrict方法兩次 - 第一次爲獲得最近的N項和第二爲讓他們之間的未讀條目。沒有查詢獲​​取集合中的N個項目,但您可以使用時間和時間範圍來過濾項目,有關更多信息,請參閱Enumerating, Searching, and Filtering Items in a Folder

您可能會發現下面的文章有幫助:

+0

使用查找和FindNext中已知,但它將會是一場表演。如果我使用這種方法,我將不得不迭代獲得N個項目,但是我正在尋找的是一些開箱即用的方法來獲取N個項目。如果有幫助,我可以使用任何其他庫 –

相關問題