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

两种方法的区别是什么?你更喜欢哪一个?(我不认为你真的需要绑定到一个文件夹?)

EWS管理API使用FindItems的最佳方法

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());