我正在探索一个选项,看看是否可以使用Office 365 Mail REST API从组织中的所有邮箱(即在域内)获取邮件,或者是否有其他方法可以轻松获取这些邮件
这些是我探索过的选项: 1)bcc所有电子邮件到特定帐户,然后从密件抄送帐户获取邮件。 2)探索连接器选项以将所有邮件发送到另一个电子邮件服务器。 3)我还看到其他帖子建议创建一个管理员帐户/安全组,并使用电源shell为该帐户提供对组织中所有邮箱的完全访问权限但这个选项看起来非常不方便,因为新邮箱可以添加,所以电源外壳需要再次运行,即使Admin用户仍然获得完全访问权限仍然使用REST API获取消息,那么它只会从管理员帐户的邮箱获取消息,而不是从组织中的所有邮箱获取。 / p>
所以我想知道是否可以使用Office 365 REST API或其他一些可行且更清晰的方式获取组织的所有电子邮件?
答案 0 :(得分:2)
我认为目前没有办法实时实现这一目标。
已经建议循环遍历所有用户,但是未记录的限制阈值(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的请求,并且应用程序可以管理许多用户(可能是整个组织)的许多订阅。
答案 1 :(得分:1)
所以我想知道是否可以使用Office 365 REST API或其他一些可行且更清晰的方式获取组织的所有电子邮件?
是的,有可能。我们还可以使用Microsoft Graph(以前称为Office 365统一API)通过单个REST API端点(https://graph.microsoft.com)公开来自Microsoft云服务的多个API。并使用client credential身份验证流程获取令牌以读取组织下的所有电子邮件。
以下是实现目标的步骤。
为应用授予足够的权限
一个。选择Microsoft Graph资源
湾在应用程序权限列表中授予应用程序“Mail.Read”,如下所示
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
以下是获取您想要的特定用户的电子邮件的REST
GET / users /< id | userPrincipalName> / messages
获取https://graph.microsoft.com/users/user1@teant.onmicrosoft.com/messages
授权:bearer {token}