gpt4 book ai didi

asp.net-mvc - 对 Office 365 API 进行身份验证并从 ASP.NET MVC 应用程序发送电子邮件

转载 作者:行者123 更新时间:2023-12-04 17:52:02 25 4
gpt4 key购买 nike

我有一个 ASP.NET MVC web 应用程序想要向不同的用户发送电子邮件。目标是在我的 MVC 应用程序中有一个可重复使用的 API,它可以从不同的 View 发送单个/批量电子邮件。

我的想法是创建一个自定义 Web API,我的 MVC 应用程序可以调用它来使用 Office 365 API 发送电子邮件。现在假设我们有 2 个项目:

  1. MVC Web 应用程序 -> 这包含一个带有 UI 字段的页面,如收件人、发件人、正文、发送按钮等。
  2. MVC Web API -> 这包含对 Office 365 库和端点的引用以发送电子邮件

这种情况是否可以发送电子邮件,因为我不希望用户被重定向到他们的个人登录页面并输入他们的 Office 365 凭据。我想知道我是否可以调用一些 office 365 API 端点并向他们传递一个电子邮件地址,如 xyz@office365.com,它会向我发送一个授权 token ,我可以用它来发送电子邮件。

如果我错了或有人有更好的主意,请纠正我?

--------2017 年 5 月 17 日更新--------

抱歉南宇回复晚了。我有点忙于其他优先事项,所以没有机会查看有关您的代码示例的更多详细信息。感谢您的建议,但此时我还有其他优先事项需要处理。我不知道我将如何根据 AD 进行身份验证,因为我们拥有不同类型的体系结构。假设我们有 5 家公司使用我们的 Web 应用程序。这 5 家公司都有自己的 Office 365 帐户和 AD。我们使用我们的 SQL 数据库在授予他们访问我们的 Web 应用程序之前对他们进行身份验证,就像大多数 Web 应用程序一样,但我们无法根据他们的 AD 对他们进行身份验证,因为他们不属于我们的 AD 网络。

最佳答案

如果您希望用户在 MVC 应用程序中的 Azure AD 中进行身份验证(用户使用其凭据登录),则在 mvc 应用程序中调用 Web API,然后 Web API 在获取 token 后调用 O365 rest apis 代表原用户。您可以使用 OAuth 2.0 On-Behalf-Of 流程。有关协议(protocol)如何工作的更多信息,您可以引用 this documentthis code sample .

如果您想使用其应用程序身份(而不是用户身份)在 Web API 中调用 Office 365 库来获取访问 token ,而无需任何人工交互(例如交互式登录对话框),您可以尝试 OAuth 2.0 客户端凭据.请引用this document您可以在 here 中找到相关的代码示例(服务器或守护程序应用程序到 Web API 部分)。

更新:

您可以 1) 使用 asp.net 身份并启用 azure ad 外部登录,然后在 web api 中您可以使用 OAuth 2.0 On-Behalf-Of flow On Behalf Of the original user 发送邮件。

2) 在 web api 中使用客户端凭据流获取 token :

POST https://login.microsoftonline.com/<tenant>/oauth2/token
Content-Type: application/x-www-form-urlencoded

client_id=<clientid>&resource=https://graph.microsoft.com/&client_secret=
<client secret>&grant_type=client_credentials

然后使用访问 token (应用身份)您可以通过以下方式发送邮件:

POST https://graph.microsoft.com/v1.0/users/<userPrincipalName>/sendMail
Content-type: application/json
Authorization : Bearer token

{
"message": {
"subject": "Meet for lunch?",
"body": {
"contentType": "Text",
"content": "The new cafeteria is open."
},
"toRecipients": [
{
"emailAddress": {
"address": "ny@chencl.onmicrosoft.com"
}
}
],
},
"saveToSentItems": "true"
}

您可以从 MVC 传递 userPrincipalName。并且您应该在 Azure 门户中为您的 Web API 授予 Send mail as any user 应用程序 microsoft graph 的权限。

关于asp.net-mvc - 对 Office 365 API 进行身份验证并从 ASP.NET MVC 应用程序发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43883532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com