使用 Microsoft Graph oFFICE365 sendmail C#

发布时间 2024-01-11 14:09:17作者: 启明星工作室

using Microsoft.Graph;
using Azure.Identity;
using Microsoft.Graph.Models;

var scopes = new[] { "https://graph.microsoft.com/.default" };

var tenantId = "{tenant id}";

// Values from app registration
var clientId = "{client id}";
var clientSecret = "{client secret}";

// using Azure.Identity;
var options = new TokenCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};

// https://learn.microsoft.com/dotnet/api/azure.identity.clientsecretcredential
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret, options);

var accessToken = await clientSecretCredential.GetTokenAsync(new Azure.Core.TokenRequestContext(scopes) { });

Console.WriteLine(accessToken.Token);

var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

var requestBody = new Microsoft.Graph.Users.Item.SendMail.SendMailPostRequestBody
{
Message = new Message
{
Subject = "Meet for lunch?",
Body = new ItemBody
{
ContentType = BodyType.Text,
Content = "The new cafeteria is open.",
},
ToRecipients = new List
{
new Recipient
{
EmailAddress = new EmailAddress
{
Address = "xxxx@xxxxxxxxxxx",
},
},
},
},
SaveToSentItems = false,
};

await graphClient.Users["{user id}"].SendMail.PostAsync(requestBody);