【问题标题】:Any Office 365 REST API to get messages from all mailboxes in an organization?任何 Office 365 REST API 都可以从组织中的所有邮箱获取消息?
【发布时间】:2021-12-28 01:22:55
【问题描述】:

我正在探索一个选项,看看是否可以使用 Office 365 邮件 REST API 从组织中的所有邮箱(即域内)获取邮件,或者是否有任何其他方式可以轻松获取这些邮件。

这些是我探索过的选项: 1)密件抄送所有电子邮件到特定帐户,然后从密件抄送帐户获取消息。 2) 探索了将所有邮件发送到另一个电子邮件服务器的连接器选项。 3)我还在其他帖子中看到建议创建一个管理员帐户/安全组,并使用 power shell 为该帐户提供对组织中所有邮箱的完全访问权限,但此选项似乎非常不方便,因为可以添加新邮箱,因此 power shell需要再次运行,并且即使管理员用户在使用 REST API 获取消息时仍被授予完全访问权限,那么它只会从管理员帐户的邮箱中获取消息,而不是从组织中的所有邮箱获取消息。

所以我想知道是否可以使用 Office 365 REST API 或其他一些可行且更清洁的方式获取组织的所有电子邮件?

【问题讨论】:

标签: office365 office365-restapi


【解决方案1】:

我认为目前没有办法实时执行此操作。

已提出循环遍历所有用户的建议,但未记录的限制阈值 (https://social.msdn.microsoft.com/Forums/en-US/358c5468-f887-4517-a2f0-245197dc6e0d/graph-api-rate-limiting-throttling?forum=WindowsAzureAD) 使该路径不确定。例如,如果一个组织有 1000 个用户,可能平均每秒发送 5 封电子邮件怎么办?如果我们想要一张最新的图片怎么办?

使用订阅 (https://graph.microsoft.io/en-us/docs/api-reference/v1.0/resources/subscription),我们可以确定哪些用户受到了影响(负载中没有太多细节),但是当我们去查找详细信息时,我们可能会受到限制。没有任何批量生产能力,我们不得不一次查找一个用户。

希望阈值允许对不同 URI 的请求以及一个应用程序可以管理许多用户(可能是整个组织)的许多订阅(至今尚未记录和测试)。

【讨论】:

    【解决方案2】:

    所以我想知道是否可以使用 Office 365 REST API 或其他一些可行且更清洁的方式获取组织的所有电子邮件?

    是的,这是可能的。我们还可以使用 Microsoft Graph(以前称为 Office 365 统一 API)通过单个 REST API 端点 (https://graph.microsoft.com) 从 Microsoft 云服务公开多个 API。并使用client credential 身份验证流程获取用于读取组织下所有电子邮件的令牌。

    以下是实现目标的步骤。

    1. 在 Azure 门户上注册应用(网页)(参考here
    2. 为应用授予足够的权限

      一个。选择 Microsoft Graph 资源

      b.在应用程序权限列表列表中授予应用程序“Mail.Read”,如下所示

    3. 使用以下代码获取token

    POST https://login.microsoftonline.com/O365E3W15.onmicrosoft.com/oauth2/token
    
    grant_type=client_credentials&client_id={ClientID}&client_secret={clientSecret}&resource=https%3A%2F%2Fgraph.microsoft.com
    
    1. 这是 REST 为您想要的特定用户获取电子邮件

      GET /users//messages

      获取https://graph.microsoft.com/users/user1@teant.onmicrosoft.com/messages

      授权:不记名{token}

    【讨论】:

    • Fei:感谢您的回答,但我正在寻找的是获取所有用户的邮件,而不是执行 GET /user//messages 特定用户。有可能吗?我的意思是:a@foo.com、b@foo.com 等,我想要做的是类似域名 foo.com 上的 GET,我应该能够在没有 foo.com 的情况下获取所有用户的电子邮件必须遍历每个用户。
    • 目前,Office 365 REST 不支持获取组织上的所有消息,而不是循环所有用户。如果您需要此功能,可以通过here 提交反馈。
    • @FeiXue-MSFT 你还能找回已停用帐户的电子邮件吗?当停用发生时,电子邮件会消失吗?我们有一种情况,员工可能会离开公司,而另一名员工必须接管他们之前与我们客户的电子邮件通信。
    猜你喜欢
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多