在将使用EWS (ews-java-api v 2.0) SDK/API/Scope的旧代码转换为图形(microsoft-graph v5.4.0)时,我发现我可以使用(稍微简化一下获取FolderId值的方法)在EWS中一次搜索(比如通过InternetMessageId)多个文件夹层次结构:
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一次找到它。
对于Graph,我发出两个调用,以确保消息不存在
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();有没有一种方法可以用Graph一次性搜索多棵树,使其更像接受列表的EWS路径?
发布于 2021-10-20 19:26:01
使用List Messages端点获取登录用户邮箱(包括已删除邮件和垃圾邮件文件夹)中的邮件。
根据页面大小和邮箱数据的不同,从邮箱获取邮件可能会引发多个请求。默认页面大小为10条消息。使用$top自定义页面大小,范围为1到1000。
要缩短操作响应时间,请使用$select指定所需的确切属性。请参阅文档here。
Java代码片段-
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
MessageCollectionPage messages = graphClient.me().messages()
.buildRequest()
.select("sender,subject")
.get();https://stackoverflow.com/questions/69585530
复制相似问题