You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph API发送邮件后移动邮件及ImmutableId使用疑问

问题1:能否连续调用Send与Move方法?是否需要等待/轮询?

不能直接连续调用Send和Move方法,必须等待邮件发送流程完成后再执行Move操作,原因如下:

  • Send API调用成功仅代表请求已被服务器接收并排入发送队列,邮件实际完成发送、生成已发送副本的过程是异步的,需要一定时间。
  • 直接紧跟调用Move时,原草稿邮件可能已被标记为已发送状态,或系统正在将其副本同步到已发送文件夹,此时用原ID调用Move会返回“找不到邮件”或状态错误的异常。

正确的做法是轮询确认邮件发送完成:

  • 在Send调用后,定期调用GET /users/{mailUser}/messages/{created.Id},检查邮件的isSent属性是否为true,也可同时检查parentFolderId是否已变为已发送文件夹的ID(可选)。
  • 设置合理的轮询间隔(比如1-2秒)和超时时间(比如30秒),避免无限等待。

问题2:C#代码中ImmutableId的使用方式是否正确?

你的ImmutableId使用方式是正确的,关键点如下:

  • 创建草稿时通过Prefer: IdType="ImmutableId"请求头获取邮件的ImmutableId,代码实现正确:
    x.Headers.Add("Prefer", "IdType=\"ImmutableId\"");
    
  • 后续Send和Move操作直接使用获取到的created.Id(即ImmutableId)是合法的,Graph API支持用ImmutableId作为邮件标识符进行操作。

额外注意:如果后续需要查询该邮件(比如在已发送文件夹中查找),建议继续携带Prefer: IdType="ImmutableId"请求头,确保返回的ID始终是ImmutableId,保持操作一致性。

内容的提问来源于stack exchange,提问作者Frederik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:30:55