我想实现一些功能,以允许用户使用msGraph API搜索mailFolder是否可以使用msgraph API通过mailFolderdisplayName搜索mailFolder在文档中我没有找到任何关于如何搜索mailFolder的内容。它只显示了如何通过ID获取mailFolder。我们甚至可以搜索mailFolder吗?或者搜索不支持mailFolder?感谢您的回答或建议
k3bvogb11#
您可以使用$filter查询参数搜索与displayName匹配的文件夹
$filter
displayName
GET https://graph.microsoft.com/v1.0/me/mailFolders?$filter=displayName eq 'name'
或者如果displayName以某个值开始
GET https://graph.microsoft.com/v1.0/me/mailFolders?$filter=startswith(displayName,'name')
资源:过滤器参数
nnvyjq4y2#
是的,这是可能的-在2个步骤的过程。首先,获取邮箱的所有邮件夹(根和子文件夹):
https://graph.microsoft.com/v1.0/users/<[ID] or UPN of mailbox>/mailFolders/delta
这会给你一个包含所有mailFolders的数组。在我的例子中,我将它们存储在$MailFolders(Powershell)中其次,只从数组中获取具有所需displayName的那个。例如,在Powershell中,我这样做:
$Mailfolder = $MailFolders | where displayName -eq "<displayName of desired folder>"
guykilcj3#
获取所有的根文件夹,然后遍历它们并搜索它们的子文件夹。我的示例只搜索收件箱中的子文件夹,但你应该明白:
var folders = await graphClient.Users[user.id].MailFolders.Request().Filter("displayname eq '"+DestFolderName+"'").GetAsync(); if (folders is null || folders.Count != 1) { folders = await graphClient.Users[user.id].MailFolders.Request().Filter("displayname eq 'Posteingang'").GetAsync(); if (folders.Count == 1) { var childfolders = await graphClient.Users[user.id].MailFolders[folders.First().Id].ChildFolders.Request().Filter("displayname eq '"+DestFolderName+"'").GetAsync(); if (childfolders is null || folders.Count != 1) return BadRequest("Could not find folder!"); else folderid= childfolders.First().Id; } else return BadRequest("Could not find folder!"); } else folderid= folders.First().Id;
3条答案
按热度按时间k3bvogb11#
您可以使用
$filter
查询参数搜索与displayName
匹配的文件夹或者如果
displayName
以某个值开始资源:
过滤器参数
nnvyjq4y2#
是的,这是可能的-在2个步骤的过程。
首先,获取邮箱的所有邮件夹(根和子文件夹):
这会给你一个包含所有mailFolders的数组。在我的例子中,我将它们存储在$MailFolders(Powershell)中
其次,只从数组中获取具有所需displayName的那个。
例如,在Powershell中,我这样做:
guykilcj3#
获取所有的根文件夹,然后遍历它们并搜索它们的子文件夹。我的示例只搜索收件箱中的子文件夹,但你应该明白: