[英]Unable to send email using Microsoft.Graph
我正在嘗試使用 Microsoft.Graph API 發送電子郵件,但是我收到一條錯誤消息,指出“請求的用戶無效”。 我能夠很好地獲得訪問令牌,但是我永遠無法發送電子郵件。
我曾嘗試使用 graphClient.Me.SendEmail 沒有運氣。 我試圖在應用程序上創建另一個用戶,但沒有成功。 我曾嘗試使用管理員電子郵件發送電子郵件,但沒有成功。
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.SendEmail
,它不知道Me
是誰。 如果要使用graphClient.Me.SendEmail
,則需要使用用戶名/密碼流。
2.我在我這邊測試了一下,重現了錯誤The requested user is invalid
。 當我們使用電子郵件地址(不在當前租戶中)時,它會顯示此錯誤消息。 我們可以在您的代碼中使用像xxx@xxx.onmicrosoft.com
這樣的電子郵件地址來發送電子郵件。 即使此電子郵件已添加到具有全局管理員角色的 Azure AD 中,我們也無法使用任何其他電子郵件地址發送電子郵件。 當您在代碼中使用電子郵件xxx@xxx.onmicrosoft.com
發送電子郵件時,您可能會遇到錯誤MailboxNotEnabledForRESTAPI Message: REST API is not yet supported for this mailbox.
這意味着電子郵件沒有 o365 許可證。 您需要為此用戶分配o365 許可證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.