使用 Microsoft graph API 工作帐户发送电子邮件
Sending email with Microsoft graph API work account
有谁知道如何在没有登录用户的情况下运行的应用请求使用 Graph API 发送电子邮件的权限?
我有一个 Azure WebApp,有权使用 Microsoft Graph 发送电子邮件。
在 Azure 门户(Azure Active Directory -> 应用程序注册 -> MyApp - API 权限)中,我的应用程序已授予 Mail.Send
(类型:应用程序:描述:以任何用户身份发送邮件)的权限。
下一步,我将邀请我所在组织的用户。在 Azure Ad 中,用户类型是来宾。我在该帐户上收到一封电子邮件,要求我接受邀请。
我可以通过 Microsoft 登录页面使用该帐户登录,但该帐户由我的组织管理——它不是我创建的帐户。
在 MS Graph 资源管理器中使用该帐户我可以发送电子邮件,但我想在我的应用程序中执行相同的操作而无需登录。目的是仅将此帐户用于发送电子邮件。
我能够获取访问令牌,使用 API 并获取用户基本信息,但是当我尝试发送电子邮件时出现异常:
Code: ResourceNotFound
Message: Resource could not be discovered.
// get token
var authContext =
new AuthenticationContext("https://login.microsoftonline.com/" + tenantID);
var result = await authContext
.AcquireTokenAsync("https://graph.microsoft.com", new ClientCredential(clientId, secret));
// create graph service
GraphServiceClient graphServiceClientApp =
new GraphServiceClient("https://graph.microsoft.com/v1.0",
new DelegateAuthenticationProvider(
async(requestMessage) =>
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("bearer", result.AccessToken);
}));
// create message obj
//.....
// send email
await graphServiceClientApp.Users["f5521fbc-481e-4e90-9166-33a64eb8f7e9"]
.SendMail(message, false)
.Request()
.PostAsync();
像f5521fbc-481e-4e90-9166-33a64eb8f7e9
这样的用户ID取自Azure门户,在用户详细信息中有一个对象ID字段
以用户身份发送电子邮件时,用户需要关联一个邮箱。
没有包含 Exchange Online 许可证的用户以及外部用户(例如受邀用户)通常在租户中没有邮箱,因此无法发送电子邮件。
有谁知道如何在没有登录用户的情况下运行的应用请求使用 Graph API 发送电子邮件的权限?
我有一个 Azure WebApp,有权使用 Microsoft Graph 发送电子邮件。
在 Azure 门户(Azure Active Directory -> 应用程序注册 -> MyApp - API 权限)中,我的应用程序已授予 Mail.Send
(类型:应用程序:描述:以任何用户身份发送邮件)的权限。
下一步,我将邀请我所在组织的用户。在 Azure Ad 中,用户类型是来宾。我在该帐户上收到一封电子邮件,要求我接受邀请。 我可以通过 Microsoft 登录页面使用该帐户登录,但该帐户由我的组织管理——它不是我创建的帐户。
在 MS Graph 资源管理器中使用该帐户我可以发送电子邮件,但我想在我的应用程序中执行相同的操作而无需登录。目的是仅将此帐户用于发送电子邮件。
我能够获取访问令牌,使用 API 并获取用户基本信息,但是当我尝试发送电子邮件时出现异常:
Code: ResourceNotFound
Message: Resource could not be discovered.
// get token
var authContext =
new AuthenticationContext("https://login.microsoftonline.com/" + tenantID);
var result = await authContext
.AcquireTokenAsync("https://graph.microsoft.com", new ClientCredential(clientId, secret));
// create graph service
GraphServiceClient graphServiceClientApp =
new GraphServiceClient("https://graph.microsoft.com/v1.0",
new DelegateAuthenticationProvider(
async(requestMessage) =>
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("bearer", result.AccessToken);
}));
// create message obj
//.....
// send email
await graphServiceClientApp.Users["f5521fbc-481e-4e90-9166-33a64eb8f7e9"]
.SendMail(message, false)
.Request()
.PostAsync();
像f5521fbc-481e-4e90-9166-33a64eb8f7e9
这样的用户ID取自Azure门户,在用户详细信息中有一个对象ID字段
以用户身份发送电子邮件时,用户需要关联一个邮箱。
没有包含 Exchange Online 许可证的用户以及外部用户(例如受邀用户)通常在租户中没有邮箱,因此无法发送电子邮件。