2013-04-04 77 views
1

在EWS託管API,你可以這樣做:EWS託管API最好的方法使用FindItems

Folder inbox = Folder.Bind(service, WellKnownFolderName.Inbox); 
inbox.FindItems(...) 

,或者你可以這樣做:

service.FindItems(WellKnownFolderName.Inbox, filter, view); 

如下所述:http://msdn.microsoft.com/en-us/library/exchange/dd633693(v=exchg.80).aspx

什麼兩種方法之間的區別是什麼?哪一個是首選? (我不認爲你真的需要綁定到一個文件夾?)

回答

1

Folder.Bind允許你想要的文件夾綁定。如果您有權限,您甚至可以綁定到其他用戶的文件夾。或者任何文件夾,一旦你恢復FolderID(你可以使用它作爲參數)

例如,如果我是交換管理員,我想獲得具有smtp地址「john的用戶的根文件夾。 [email protected]」,我想這種方式綁定到該文件夾​​:

Folder FolderBind = 
        Folder.Bind(service, new FolderId 
         (WellKnownFolderName.MsgFolderRoot, "[email protected])); 

一旦你已經裝載了你想要的任何文件夾中的FolderBind,你可以用其他的方法,因爲它接收Folder.ID參數,你可能不知道。但是要知道感謝Folder.Bind,你有「[email protected]的」 MsgFolderRoot的FolderID,所以你可以在他裏面的物品有執行搜索:

FindItemsResults<Item> findResults = service.FindItems(FolderBind.Id, searchFilter, view); 

我不知道如果我讓自己清楚。我問你更多的疑問。

編輯:

你可以給一個FindItems refinated searchFilter,讓你獲得參加一些要求項目 。喜歡用附件搜索電子郵件。搜索比某個日期還早的電子郵件 。 ETT。

下面的例子:

List<SearchFilter> searchORFilterCollection = new List<SearchFilter>(); 
      searchORFilterCollection.Add(new SearchFilter.IsEqualTo(EmailMessageSchema.HasAttachments, true)); 
      searchORFilterCollection.Add(new SearchFilter.IsLessThan(EmailMessageSchema.DateTimeReceived,DateTime.Now.AddMonths(-3))); 


SearchFilter searchFilter= new SearchFilter.SearchFilterCollection(LogicalOperator.And,searchORFilterCollection.ToArray()); 
+0

好吧,這部分說得很清楚:如果你想在其他用戶的文件夾爲管理員進行搜索。 (John Snowhèhè;-)) – juFo 2013-05-23 13:41:29

+0

是的。我使用這段代碼將電子郵件從蓮花遷移到交換。真的很有用。使用folderbind獲取您需要的任何文件夾的文件夾信息。然後使用findResults獲取項目。您可以在SearchFilter中指定一些過濾器,例如帶有附件的電子郵件,日期早於...的電子郵件。 – 2013-05-23 13:43:30

相關問題