使用Outlook 365 API在组织中获取电子邮件的最佳方式

问题描述:

我正在构建一个应用程序,用于从组织内的电子邮件收集统计信息。让我们假设这些组织使用Outlook 365 我希望能够做的最简单的方法如下:使用Outlook 365 API在组织中获取电子邮件的最佳方式

  • 获取权限读取所有的邮件在组织
  • 获取电子邮件+附件并运行我的统计

看来,有没有简单的方法与Outlook 365 我发现这个做到这一点:any-office-365-rest-api-to-get-messages-from-all-mailboxes-in-an-organization,但我不明白,如果它可以使用Outlook 365.我错了,任何组织工作?我如何在随机组织上安装这样的应用并获得所有权限?

我想到了另一个解决方案,它有缺点但很容易: 组织为我创建一个电子邮件地址,例如[email protected],并在Exchange 365中定义将所有电子邮件转发到此地址。然后,我可以使用Outlook 365 REST API来获取所有电子邮件并删除那些我经过的邮件。 主要缺点是,我担心这个邮箱会很快满了,我会错过很多邮件。根据this,邮箱应该有50GB,这是一个足够大的缓冲区。

有没有正常的方法来做到这一点?有没有人遇到过这样的问题?

非常感谢。

您需要在Azure AD上创建一个mutlitenant应用程序。

如果您希望您的应用程序能够读取组织中的所有电子邮件(而不是已经登录并授予您的应用程序的用户的电子邮件)。您需要添加以下权限到应用程序:阅读邮件中的所有邮箱(见图片)

备注这个范围admin_consent只。然后,您的应用程序需要由Office 365租户的管理员进行验证。你可以阅读更多关于这个here

Azure AD application configuration

+0

感谢您的回复! 最后一个问题,创建应用程序后的流程是什么? 我的意思是,假设我现在有一个具有这些权限的应用程序。用户如何登录?在他这样做后,我如何获得所需的标记?鉴于此令牌,我可以使用REST API获取我想要的所有信息? – Alex

+0

我真的可以谈论委托作用域,你有一个令牌可以让你代表连接的用户请求API。您有两种可能的流程:完整的“客户端”(不适合您的情况)或服务器发出请求的代码授权流程。这里有好的文档https://dev.office.com/blogs/oauth-and-openid-connect-for-office-365-developer。如果你想看看我是如何实现的(只委派范围和user_consent),请参阅[我的应用程序Keluro](https://app.keluro.com)。但在你的情况下,你需要admin_consent授权应用程序并访问所有邮箱。 –