【问题标题】:Unable to send email using graph API无法使用图形 API 发送电子邮件
【发布时间】:2020-12-09 11:06:23
【问题描述】:

以下代码用于检索令牌

IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
                        .Create(clientId)
                        .WithTenantId(tenantId)
                        .WithClientSecret(clientsec)
                       
                        .Build();

                AuthorizationCodeProvider authprovider = new AuthorizationCodeProvider(confidentialClientApplication, scopes);
                //ClientCredentialProvider authprovider = new ClientCredentialProvider(confidentialClientApplication);
                var authResult = await confidentialClientApplication
                        .AcquireTokenForClient(scopes)
                        .ExecuteAsync().ConfigureAwait(false);
                return authResult.AccessToken;

并且使用我调用发送邮件不起作用。

                        await graphServiceClient.Me
                            .SendMail(email, false)
                             .Request()
                             .PostAsync();

有人可以帮忙解决这里的问题吗?

在我的场景中,我必须使用多个发件人地址发送邮件。

【问题讨论】:

  • 您是否尝试使用“多个 FROM(代表发送)”电子邮件地址发送电子邮件?
  • 我还看到您正在使用 Me 端点并尝试从多个电子邮件地址发送电子邮件。我不适合它。我建议您查看文档。

标签: microsoft-graph-api microsoft-graph-mail


【解决方案1】:

您正在使用 ClientCredentials(这意味着没有用户)所以 .Me() 不可用。

要以特定用户的身份发送邮件,您需要引用该用户。 这是一个示例如何为团队工作。 https://docs.microsoft.com/en-us/graph/sdks/create-requests?tabs=CS#updating-an-existing-entity-with-patch


var userId = "71766077-aacc-470a-be5e-ba47db3b2e88";

await graphClient.Users[userId]
  .SendMail(email, false)
  .Request()
  .PostAsync();

我不确定您是否也可以使用用户名 (upn) 代替 id。

【讨论】:

    猜你喜欢
    • 2020-11-25
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2020-08-29
    • 2020-04-03
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多