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

如何使用C#通过Graph API在共享邮箱文件夹间移动邮件及操作Message对象

使用C#通过Graph API移动共享邮箱中的邮件

前提条件

  • 已初始化并授权的GraphServiceClient实例(权限需包含Mail.ReadWrite.Shared或等效权限)
  • 已获取目标共享邮箱的邮箱地址(或ID)
  • 已获取目标文件夹的ID(可通过Graph API查询共享邮箱的文件夹列表得到)
  • 已持有要移动的Microsoft.Graph.Models.Message对象

实现代码

直接利用已有的Message对象,结合共享邮箱标识调用Move接口即可完成操作:

// 假设已提前准备好以下变量
// GraphServiceClient graphClient = ...; // 已完成授权的客户端实例
// Message targetMessage = ...; // 需要移动的邮件对象
// string sharedMailboxAddress = "shared@yourdomain.com"; // 共享邮箱地址
// string targetFolderId = "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7illHggEAxMP7hX1kEuqR5tFw4soPnQAAAIBDQAAAA=="; // 目标文件夹ID

// 发起移动请求
await graphClient
    .Users[sharedMailboxAddress]
    .Messages[targetMessage.Id]
    .Move
    .PostAsync(new Microsoft.Graph.Messages.Item.Move.MovePostRequestBody
    {
        DestinationId = targetFolderId
    });

关键注意事项

  • 权限验证:应用权限需配置Mail.ReadWrite.Shared,委派权限需确保用户拥有共享邮箱的读写访问权限
  • 目标范围:只能将邮件移动到同一共享邮箱内的文件夹,跨邮箱移动需采用「复制+删除」的组合操作
  • 异常处理:如果邮件已被删除/移动,会返回404错误;权限不足则返回403,建议添加异常捕获逻辑:
try
{
    await graphClient
        .Users[sharedMailboxAddress]
        .Messages[targetMessage.Id]
        .Move
        .PostAsync(new Microsoft.Graph.Messages.Item.Move.MovePostRequestBody
        {
            DestinationId = targetFolderId
        });
    Console.WriteLine("邮件移动成功");
}
catch (ServiceException ex)
{
    Console.WriteLine($"移动失败: {ex.Message}");
    // 根据ErrorCode做针对性处理,例如404=邮件不存在,403=权限不足等
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:07:09