使用带有附件的 Microsoft Graph 发送电子邮件。微软代码示例不清楚

Sending email using Microsoft graph with attachment. Microsoft code example unclear

嗨,我正在尝试使用 Microsoft graph api 发送消息。
以前,我在发送 messages/emails 和图表 api 时没有附件。现在我需要每人附上10个附件。

所以我查找了示例并找到了 Microsoft 文档,它显示了以下代码

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var attachment = new FileAttachment
{
 Name = "smile",
 ContentBytes = Convert.FromBase64String("R0lGODdhEAYEAA7")
};

await graphClient.Me.Messages["{message-id}"].Attachments
.Request()
.AddAsync(attachment);

Link: https://docs.microsoft.com/en-us/graph/api/message-post-attachments?view=graph-rest-1.0&tabs=csharp

我的问题是它显示的内容不清楚我不确定我是否会使用消息 ID。我也看不到消息是否已创建以及附件是如何创建的。

有人可以帮忙吗

您可以参考this document了解如何发送带附件的邮件示例。下面是我的测试代码,它对我有用,我使用客户端凭证流来提供身份验证..

using Azure.Identity;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Graph;

public class HomeController : Controller
{
    private readonly IWebHostEnvironment _appEnvironment;

    public HomeController(IWebHostEnvironment appEnvironment)
    {
        _appEnvironment = appEnvironment;
    }

    public async Task<string> sendMailAsync() {
        var scopes = new[] { "https://graph.microsoft.com/.default" };
        var tenantId = "your_tenant_name.onmicrosoft.com";
        var clientId = "azure_ad_clientid";
        var clientSecret = "client_secret";
        var clientSecretCredential = new ClientSecretCredential(
            tenantId, clientId, clientSecret);
        var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
        
        var a = _appEnvironment.WebRootPath;//I have a file stored in my project
        var file = a + "\hellow.txt";
        byte[] fileArray = System.IO.File.ReadAllBytes(@file);
        //string base64string = Convert.ToBase64String(fileArray);

        var message = new Message
        {
            Subject = "Meet for lunch?",
            Body = new ItemBody
            {
                ContentType = BodyType.Text,
                Content = "The new cafeteria is open."
            },
            ToRecipients = new List<Recipient>()
            {
                new Recipient
                {
                    EmailAddress = new EmailAddress
                    {
                        Address = "xxx@outlook.com"
                    }
                }
            },
            Attachments = new MessageAttachmentsCollectionPage()
            {
                new FileAttachment
                {
                    Name = "attachment.txt",
                    ContentType = "text/plain",
                    ContentBytes = fileArray
                }
            }
        };

        await graphClient.Users["user_id"]
            .SendMail(message, null)
            .Request()
            .PostAsync();

        return "success";
    }
}