簡體   English   中英

無法使用 Microsoft.Graph 發送電子郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM