【问题标题】:Retrieve mail addresses of nested distribution list via Graph API通过 Graph API 检索嵌套分发列表的邮件地址
【发布时间】:2020-01-31 22:30:35
【问题描述】:

我正在尝试通过 Microsoft Graph API v1.0 找出谁被邀请参加活动。该活动为我提供了一个受邀者列表,其中还可以包含分发列表。这很好,但我真的很想知道每个受邀参加该会议的人的邮件地址(直接或通过 DL)。

如果受邀者是分发列表,该事件会为我提供以下信息:"name": "DL Foo", "address": "DL_1234567890@global.corp.foo"

我的第一个想法是使用 https://graph.microsoft.com/v1.0/groups/?$filter=startswith(displayName,'DL Foo') 获取 DL 的 id,然后使用 https://graph.microsoft.com/v1.0/groups/{id}/members 列出所有成员并进行递归调用,以防任何成员是嵌套的 DL。

我得到了一个Insufficient privileges 作为答案,所以我现在不能尝试这个。 这会是首选方法吗(然后我会游说我的组织更改权限)?

有没有更优雅的方式通过 Graph API 检索事件的所有受邀者?

【问题讨论】:

    标签: microsoft-graph-api microsoft-graph-mail


    【解决方案1】:

    看来你要的是List group transitive members端点:

    获取组成员的列表。一个组可以有用户、设备、 组织联系人和其他组作为成员。这个操作 是可传递的,并返回一个所有嵌套成员的平面列表

    所以,GET /groups/{id}/transitiveMembers 应该返回所有嵌套成员的平面列表(包括“分发列表”组的成员)

    【讨论】:

    • 感谢您为我指出正确的 API!关于权限,您似乎需要管理员同意才能使用组 API。由于我的应用程序在用户同意的情况下工作,因此它似乎无法获得 DL 的成员 :-( 我真的不明白为什么用户同意不足?任何用户都可以通过双击在 Outlook 中展开 DL。为什么用户不能通过 Graph API 做同样的事情?
    • 即使对 group.read.all 有特殊的“管理员同意”,也无法获取 DL 的组 ID。使用显示名称过滤根本不起作用(例如graph.microsoft.com/v1.0/… foo')。因此,如果我只知道 DL 的名称和邮件地址,我似乎无法使用列表组传递成员端点:-(
    • 我的错,如docs.microsoft.com/en-us/graph/api/… 中所述,您需要一个额外的范围(和管理员同意):对于 User.ReadBasic.All。我仍然不明白为什么需要管理员同意,但一旦你拥有它,你就可以真正阅读 DL :-)
    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 2021-08-27
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多