EWS管理API使用FindItems的最佳方法
本文关键字:最佳 方法 FindItems 使用 管理 API EWS | 更新日期: 2023-09-27 18:07:33
在EWS Managed API中你可以做:
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
两种方法的区别是什么?你更喜欢哪一个?(我不认为你真的需要绑定到一个文件夹?)
Folder.Bind
允许您绑定所需的文件夹。如果您有权限,您甚至可以绑定到其他用户的文件夹。或者任何文件夹一旦你恢复FolderID(你可以使用它作为一个参数)
例如,如果我是一个exchange管理员,并且我想获得smtp地址为"john.snow@mail.com"的用户的根文件夹,我将以这种方式绑定到该文件夹:
Folder FolderBind =
Folder.Bind(service, new FolderId
(WellKnownFolderName.MsgFolderRoot, "john.snow@mail.com));
一旦你用你想要的文件夹加载了FolderBind,你可以使用另一种方法,因为它接收你可能不知道的Folder.ID
参数。但多亏了文件夹。绑定,您有"john.snow@mail.com"的MsgFolderRoot
的文件夹id,因此您可以在他的项目中执行搜索:
FindItemsResults<Item> findResults = service.FindItems(FolderBind.Id, searchFilter, view);
我不知道我是否说清楚了。如果你还有疑问就问我。
编辑:您可以给FindItems一个精细的searchFilter,它将允许您获取项目满足一些要求。比如搜索带有附件的电子邮件。搜索电子邮件比某个日期更老。摘要。
下面是一个例子:
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());