我们已经实现了通过图形api发送电子邮件。
在microsoft app https://apps.dev.microsoft.com中,我们创建了应用程序,并为此应用程序设置了“Mail.Send”权限。
对于身份验证,我们使用“无需用户访问”的方式。
我们通过这个网址接收令牌:https://login.microsoftonline.com/our_tenant/oauth2/v2.0/token和body看起来像这样:
"client_id=app_id&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=app_secret_key&grant_type=client_credentials"
使用以下链接发送邮件:
https://graph.microsoft.com/v1.0/users/user_Email/sendMail
在身体json与电子邮件对象。
当我们通过此方法发送电子邮件时,接收响应代码'403',文本“访问被拒绝。检查凭据,然后重试。”
在测试之前,我们已经为开发此集成创建了试用帐户。通过试用帐户,这个过程非常完美。 你能帮忙解决当前的问题吗?也许我们已经忘记了某些事情或者帐户存在问题。
最好的祝福
每当你遇到这样的问题,你有一个令牌并且你认为你应该有权访问某些东西,但是API返回403时,第一步应该是解析访问令牌。您可以使用https://jwt.io(或任何其他JWT解析器)。您想确认以下内容:
aud
声称设置为https://graph.microsoft.com
tid
声明是与您的Office 365租户的租户ID匹配的GUIDroles
声明是你期望的范围数组。在你的情况下,它应该包括Mail.Send
scp
声明是一个包含您期望的范围的字符串。我的猜测是,你可能有一个没有roles
声明的令牌,如果管理员未提供同意,将会发生这种情况。您可以通过查看this section of the Azure article on client credential flow来解决这个问题。