无法使用Graph创建草稿,但直接发送邮件效果很好

任务

最近,Microsoft宣布可以发送附件大于4MB的电子邮件。

使用较小的附件,我们能够在一个请求中完成所有操作。现在,我们必须创建草稿,上传附件,然后发送文件。

我有一个可以在单个请求中发送邮件的工作代码:

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["[email protected]"]
    .SendMail(email, true)
    .Request()
    .WithMaxRetry(5)
    .PostAsync();

上面的代码工作正常,但是当我将最后一行更改为:

Message draft = await graphClient
    .Users["[email protected]"]
    .MailFolders
    .Drafts
    .Messages
    .Request()
    .AddAsync(mail);

或者:

Message draft = await graphClient
    .Users["[email protected]"]
    .Messages
    .Request()
    .AddAsync(mail);

我收到一个ErrorAccessDenied错误:

访问被拒绝。检查凭据,然后重试。

为什么在单个请求中发送电子邮件会起作用,但是创建草稿会失败?我需要任何特殊权限吗?

马克·拉弗勒尔

您没有指定选择的权限范围,但这很可能是问题所在。

简化版/sendMail需要获得Mail.Send许可。这是一个相当轻巧的作用域,旨在为应用程序提供一种无需访问邮箱本身即可发送电子邮件的机制。

但是,在创建消息草稿时,您需要Mail.ReadWrite这是因为,不像/sendMail,你需要创建,更新和能力,然后发送消息。

这些是所需的步骤和权限:

  1. POST /me/messages创建草稿消息(Mail.ReadWrite)。
  2. PATCH /me/messages/{id}添加/更改草稿(Mail.ReadWrite)的内容
  3. POST /me/messages/{id}/attachments将附件添加到草稿(Mail.ReadWrite)。
  4. POST /me/messages/{id}/send发送消息(Mail.Send)。

因此,对于您正在查看的场景,您将需要以下范围:

  • User.Read (要求进行身份验证)
  • Mail.ReadWrite (要求生成草稿)
  • Mail.Send (要求发送消息)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用googleapiclient发送ID发送的电子邮件草稿

无法在 Outlook 应用程序上使用 powershell 创建 Outlook 电子邮件草稿

无法使用Microsoft.Graph发送电子邮件

使用Gmail API创建的草稿邮件中未呈现图像

无法使用Yahoo草稿邮件中的Webdriver获得草稿主题字段的值

使用 VBA 通过 IMB 笔记发送电子邮件 - 发送的消息保存在草稿中?

在一次XP登录下无法保存草稿或从Thunderbird发送电子邮件

如何使用Google Apps脚本发送电子邮件草稿

如何使用Microsoft graph API为已发送邮件文件夹创建订阅

无法使用python发送邮件

Microsoft Graph API邮件办公室365:是否有任何创建收件箱消息的选项不是草稿?

无法通过AWS Pinpoint发送直接电子邮件

Flutter:无法在Android Studio中创建Flutter项目或运行Flutter项目。(颤振效果很好)

无法生成签名的APK,但效果很好

在Python中使用Lotus Notes发送电子邮件时无法创建链接

通过Graph API将Facebook帖子创建为草稿

无法使用 php mail() angular 发送邮件

无法使用Java代码从Gmail发送邮件

无法使用php mail()函数发送邮件

无法使用PHPMailer和Mailtrap发送邮件

无法使用android代码发送邮件

无法使用mail()php发送邮件?

使用Graph Api创建团队时无法访问Microsoft Teams频道的电子邮件地址,SharePoint和文件

当我尝试从文本框中插入值时,无法将NULL值插入列,但直接插入时效果很好

使用lsof的脚本在shell上效果很好,而不在cron上效果很好

尽管打印效果很好,但Python无法写入文件

Webgl 2中的透视投影(使用gl-matrix)无法显示任何内容,但如果没有,则显示效果很好

Mailkit:发送草稿

打开邮件应用程序而不创建电子邮件草稿

TOP 榜单

热门标签

归档