微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Microsoft Graph 使用客户端凭据流应用程序权限和个人帐户发送邮件

如何解决Microsoft Graph 使用客户端凭据流应用程序权限和个人帐户发送邮件

我正在学习 Microsoft Graph,为此我使用了 Graph ExplorerPostman

使用 Graph Explorer :我使用我的个人用户帐户 (hotmail) 登录。我一连接,就可以看到令牌。奇怪的是,当我在 jwt.io 中复制/粘贴此令牌时,它无法解码。但是我可以执行像 https://graph.microsoft.com/v1.0/me 这样的查询,它会返回我作为用户的一些信息(使用 http 200)。或者这个查询 https://graph.microsoft.com/v1.0/me/sendMail 允许我发送测试并接收测试邮件(使用 http 202)。所有这些请求都是“委托许可”。因此,我通过个人帐户 (hotmail) 使用 Graph Explorer 没有任何问题。

With Postman :这次我将使用“应用程序权限”执行一些测试。我按照以下步骤操作:

在 Azure 门户上

第 1 步:应用注册/新注册/我命名/选择第三个帐户类型(任何组织目录中的帐户和个人 Microsoft 帐户)/点击注册按钮

第 2 步:Api 权限/添加权限/Microsoft Graph/应用程序权限/Mail.Send(以任何用户身份发送邮件

第 3 步:管理员同意...按钮以激活权限

第 4 步:证书和密码/新客户端密码/输入描述/点击添加按钮

步骤 5:在 Postman 中获取令牌

当在 jwt.io 中复制/粘贴此令牌时,我看到:

enter image description here

第 6 步:查询列出所有用户

第七步:查询发送邮件

{
  "message": {
    "subject": "This is my subject","body": {
      "contentType": "Text","content": "This is my content"
    },"toRecipients": [
      {
        "emailAddress": {
          "address": "thierry.langie@skynet.be"
        }
      }
    ],"ccRecipients": [
    ]
  },"savetoSentItems": "false"
 }

我想知道为什么会出现此错误我可以使用 Graph Explorer(使用委派权限时)而不是 Postman(使用应用程序权限时)发送电子邮件

如下所示,我在 Azure 门户上的企业应用程序中授予管理员许可。

enter image description here

我在某处读到错误意味着用户在 EXO 云中没有邮箱。 EXO 是 O365 Exchange Online Cloud。因此,如果您在云中没有邮箱,O365 Exchange REST API 将不适用于这些用户。如果是这样,你会怎么做?

我有一个 Web 应用程序,它应该从共享邮箱发送邮件。无论连接哪个用户,这始终是用于发送邮件的同一个邮箱。这就是我使用“应用程序权限”和“客户端凭据流”的原因。

如上所述,我使用个人帐户 (hotmail) 进行测试,但在生产中我将使用工作帐户(无法从我的开发环境访问)。

顺便说一句,我知道有一些库可以简化流程并避免使用 REST API 调用(网址),但我认为这不能解释我面临的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。