在从使用EWS (ews-java-api v 2.0
) SDK/API/Scope到图形(microsoft-graph v5.4.0
)的旧代码转换中,我发现我可以在EWS中同时搜索(例如通过InternetMessageId)多个文件夹层次结构(简化如何获得FolderId值):
SearchFilter.SearchFilterCollection filter =
new SearchFilter.SearchFilterCollection(LogicalOperator.And);
filter.add(new SearchFilter.IsEqualTo(EmailMessageSchema.InternetMessageId, msgId));
List<FolderId> folders = Arrays.asList(new FolderId("AllItems"), new FolderId("Deletions"));
ItemView view = new ItemView(10);
ServiceResponseCollection<FindItemResponse<Item>> findResultsCollection =
service.findItems(searchFolders, filter, null, view, null, ReturnErrors);
通过EWS搜索我感兴趣的消息是否在收件箱中,一些用户创建的子文件夹,JunkEmail, DeletedItems, RecoverableItemsDeletions,我通过InternetMessageId一次找到它。
使用图1发出两个调用以确保消息不存在
UserRequestBuilder u = GraphServiceClient
.builder()
.authenticationProvider(authenticationProvider)
.buildClient()
.users(user);
for (String folderTree : Arrays.asList("AllItems", "RecoverableItemsDeletions")) {
MessageCollectionPage mcp = u.mailFolders(folderTree)
.messages()
.buildRequest()
.filter("internetMessageId eq '" + msgId + "'")
.get();
是否有一种方法来搜索多个树在一个去图更像EWS路径采取了一个列表?
使用List Messages端点获取已登录用户邮箱中的消息(包括已删除项目和杂乱文件夹)。
根据页面大小和邮箱数据,从邮箱获取消息可能会产生多个请求。默认页面大小为10条消息。使用$top来自定义页面大小,范围在1到1000之间。
为了改进操作响应时间,使用$select指定所需的确切属性。参考此处的文档。
Java代码片段-GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
MessageCollectionPage messages = graphClient.me().messages()
.buildRequest()
.select("sender,subject")
.get();