C# 无法使用Microsoft.Graph发送电子邮件
我正在尝试使用Microsoft.Graph API发送电子邮件,但我收到一个错误,该错误表示“请求的用户无效”。我能够很好地获得访问令牌,但是我永远无法发送电子邮件 我尝试使用graphClient.Me.sendmail,但没有成功。我尝试在应用程序上创建另一个用户,但没有成功。我已经尝试了管理员电子邮件发送电子邮件,但没有运气C# 无法使用Microsoft.Graph发送电子邮件,c#,azure-active-directory,microsoft-graph-api,microsoft-graph-mail,C#,Azure Active Directory,Microsoft Graph Api,Microsoft Graph Mail,我正在尝试使用Microsoft.Graph API发送电子邮件,但我收到一个错误,该错误表示“请求的用户无效”。我能够很好地获得访问令牌,但是我永远无法发送电子邮件 我尝试使用graphClient.Me.sendmail,但没有成功。我尝试在应用程序上创建另一个用户,但没有成功。我已经尝试了管理员电子邮件发送电子邮件,但没有运气 var ccaOptions = new ConfidentialClientApplicationOptions { ClientId = "m
var ccaOptions = new ConfidentialClientApplicationOptions
{
ClientId = "my client id",
TenantId = "my tenant id",
ClientSecret = "my client secret",
RedirectUri = "temp",
};
var cca = ConfidentialClientApplicationBuilder.CreateWithApplicationOptions(ccaOptions).Build();
var scopes = new string[]
{
"https://graph.microsoft.com/.default"
};
var authResult = cca.AcquireTokenForClient(scopes).ExecuteAsync().Result;
string accessToken = authResult.AccessToken;
ClientCredentialProvider authProvider = new ClientCredentialProvider(cca);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
await graphClient.Users["my admin email"]
.SendMail(message, null)
.Request()
.PostAsync();
以下是我作为管理员授予的权限
对于此问题,您需要知道两点: 1。您在代码中使用客户端凭据流,因此访问令牌不包含任何用户标识。因此,当您使用
graphClient.Me.sendmail
时,它不知道谁是Me
。如果要使用graphClient.Me.sendmail
,则需要使用flow
2.我在我的身边测试了它,并再现了错误
请求的用户无效
。当我们使用电子邮件地址(不在当前租户中)时,它将显示此错误消息。我们可以使用像xxx@xxx.onmicrosoft.com
在您的代码中发送电子邮件。我们无法使用任何其他电子邮件地址发送电子邮件,即使此电子邮件已添加到具有全局管理员角色的Azure广告中。当您使用电子邮件xxx@xxx.onmicrosoft.com
在发送电子邮件的代码中,您可能会遇到错误MailboxNotEnabledForRESTAPI消息:此邮箱尚不支持REST API。
这意味着该电子邮件没有o365许可证。您需要向该用户提供o365许可证。非常感谢您的回复。它很好地解释了一切。我相信我帐户上的电子邮件没有o365许可证。要分配我需要的许可证,我必须是全局、许可证或用户管理员,因为我不拥有域,所以我不是。我猜这是没有办法的?@DeVonte是的,恐怕这是没有办法的。