azure 是否可以使用msgraph API通过mailFolder displayName搜索mailFolder

e0uiprwp  于 2023-02-05  发布在  其他
关注(0)|答案(3)|浏览(81)

我想实现一些功能,以允许用户使用msGraph API搜索mailFolder
是否可以使用msgraph API通过mailFolderdisplayName搜索mailFolder在文档中我没有找到任何关于如何搜索mailFolder的内容。它只显示了如何通过ID获取mailFolder。我们甚至可以搜索mailFolder吗?或者搜索不支持mailFolder?感谢您的回答或建议

k3bvogb1

k3bvogb11#

您可以使用$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')

资源:
过滤器参数

nnvyjq4y

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>"
guykilcj

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;

相关问题