C# Can';我不能使用图表创建草稿,但直接发送邮件也可以
最近,微软表示,可以发送附件大于4MB的电子邮件 通过较小的附件,我们可以在一个请求中完成所有操作。 现在我们必须创建草稿,上传附件,然后发送文件 我有一个工作代码,可以在一个请求中发送邮件:C# Can';我不能使用图表创建草稿,但直接发送邮件也可以,c#,microsoft-graph-api,microsoft-graph-sdks,microsoft-graph-mail,C#,Microsoft Graph Api,Microsoft Graph Sdks,Microsoft Graph Mail,最近,微软表示,可以发送附件大于4MB的电子邮件 通过较小的附件,我们可以在一个请求中完成所有操作。 现在我们必须创建草稿,上传附件,然后发送文件 我有一个工作代码,可以在一个请求中发送邮件: var confidentialClientApplication = ConfidentialClientApplicationBuilder .Create(clientId) .WithClientSecret(clientSecret) .WithTenantId(tena
var confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithClientSecret(clientSecret)
.WithTenantId(tenant)
.Build();
var authenticationProvider = new ClientCredentialProvider(confidentialClientApplication);
var graphClient = new GraphServiceClient(authenticationProvider);
var email = new Message
{
Body = new ItemBody
{
Content = i + " Works fine! " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
ContentType = BodyType.Html,
},
Subject = "Test" + (j == 0 ? "" : " " + j),
ToRecipients = recipientList,
Attachments = att
};
await graphClient
.Users["test@test.onmicrosoft.com"]
.SendMail(email, true)
.Request()
.WithMaxRetry(5)
.PostAsync();
上面的代码工作正常,但当我将最后一行更改为:
Message draft = await graphClient
.Users["test@test.onmicrosoft.com"]
.MailFolders
.Drafts
.Messages
.Request()
.AddAsync(mail);
或:
Message draft = await graphClient
.Users["test@test.onmicrosoft.com"]
.Messages
.Request()
.AddAsync(mail);
我收到一个ErrorAccessDenied
错误:
访问被拒绝。请检查凭据,然后重试
为什么在一个请求中发送电子邮件有效,但创建草稿却失败了?我需要任何特殊权限吗?您没有指定选择的权限范围,但这很可能是问题所在 简化的
/sendMail
需要Mail.Send
权限。这是一个相当轻量级的作用域,旨在为应用程序提供发送电子邮件的机制,而无需访问邮箱本身
但是,在创建草稿邮件时,您需要Mail.ReadWrite
。这是因为,与/sendMail
不同,您需要能够创建、更新并发送消息
以下是所需的步骤和权限:
POST/me/messages
创建邮件草稿(Mail.ReadWrite
)PATCH/me/messages/{id}
添加/更改草稿内容(Mail.ReadWrite
)POST/me/messages/{id}/attachments
向草稿添加附件(Mail.ReadWrite
)李>
POST/me/messages/{id}/send
发送邮件(Mail.send
)李>
因此,对于您正在查看的场景,您需要以下范围:
(需要验证)User.Read
(需要构建草稿)Mail.ReadWrite
(请求发送消息)Mail.Send
邮件。ReadWrite
权限。谢谢你的帮助!