【问题标题】:Create a custom API to use Microsoft Graph to send emails创建自定义 API 以使用 Microsoft Graph 发送电子邮件
【发布时间】:2021-12-05 01:59:49
【问题描述】:

我想开发一个自定义的 ASP.NET Web API,它可以用来作为使用 Microsoft Graph API 的用户发送电子邮件。我认为这将是一个多租户应用程序。以下是我的一些想法和一些问题:

  1. 我有一个工作的 ASP.NET MVC Web 应用程序,不同的用户可以使用我们提供的唯一凭据登录。

  2. 我的网络应用中有一个“电子邮件设置”部分。每个用户将一次导航到此部分并被重定向到“https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={{client_id}}&response_type=code&redirect_uri={{redirect_uri }}&response_mode=query&scope=offline_access%20user.read%20mail.read&state=12345"

  3. 在同意屏幕上,用户将使用他们的 Microsoft Office 365 凭据登录并同意我的应用。

  4. 在提供同意后,用户将被重定向回我的网络应用程序,我将获得返回代码的访问令牌并将访问令牌存储在 SQL 数据库中。

  5. 用户导航到要发送电子邮件的页面,填写收件人、主题、正文、附件等,然后单击“发送”按钮。

  6. 在发送按钮上,我的 ASP.NET Web 应用程序将调用我们的自定义 Web API 来发送电子邮件。 API 将有一个知道用户的端点,并将从 SQL 数据库获取适当的访问令牌,以代表该用户发送电子邮件。

问题:

  1. 我是否需要注册类型为“多租户”的 Azure 应用,因为我想支持来自不同租户的用户?

  2. 以用户身份“发送电子邮件”需要什么样的范围/权限?

  3. 我是否需要 Azure 端的委派/应用程序权限?

  4. 如何确保发送的电子邮件也保存到 Outlook 上该用户的“已发送邮件”文件夹?

【问题讨论】:

  • 您好,如果发布的答案解决了您的问题,请单击复选标记将其标记为答案。这样做有助于其他人找到问题的答案。

标签: azure asp.net-core email microsoft-graph-api multi-tenant


【解决方案1】:

根据sending email graph api,我们可以看到它提供了Application api权限,这意味着您可以创建一个azure广告应用程序并将Mail.Send权限分配给该api并使用client credential flow生成访问令牌调用此api,因此无需通过这种方式创建多租户Azure广告应用程序。

当然,如果您坚持使用授权代码流生成访问令牌以使用委托权限调用 api,您应该创建一个多租户应用程序,以便来自不同租户的用户可以通过这个 azure 广告应用程序生成访问令牌。

【讨论】:

  • 非常感谢您的回答。您认为我可以使用这种方法每天发送大约 100000 封批量电子邮件吗?我的想法是当用户在 Web App 上点击发送时将电子邮件排队到 SQL 数据库中,然后使用后台处理器处理来自 SQL 数据库的电子邮件。
  • @NaupadDoshi 您好,感谢您的回复,但我真的无法准确回答您,因为我从未尝试过。我可以说的是文档中没有提到计数限制,所以我认为你可以先尝试一下,如果发生了一些事件,你可以在这里用你的代码 sn-p 提出另一个问题,你的配置和异常或错误信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 2020-08-08
相关资源
最近更新 更多