2

在 EWS 托管 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

两种方法有什么区别?哪个是首选? (我认为您真的不需要绑定到文件夹吗?)

4

1 回答 1

2

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您可能不知道的参数。但是感谢 Folder.Bind,您拥有MsgFolderRoot“john.snow@mail.com”的 FolderID,因此您可以在他的项目中执行搜索:

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());
于 2013-05-23T13:25:04.633 回答