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

如何使用Microsoft Graph API实现Office365邮件撤回功能?

Microsoft Graph API 邮件撤回实现方案

Microsoft Graph 确实提供了邮件撤回的官方接口,对应messages资源的cancelSend动作,专门用于撤回Exchange Online(Office365)环境中已发送但未被收件人读取的邮件。

核心实现步骤

  • 获取目标邮件ID:通过你已有的邮件查询接口(如/me/messages)获取需要撤回的邮件唯一ID。
  • 调用撤回接口:发送POST请求到以下端点:
    • 委托权限(当前用户上下文):https://graph.microsoft.com/v1.0/me/messages/{message-id}/cancelSend
    • 应用权限(跨用户操作):https://graph.microsoft.com/v1.0/users/{user-id}/messages/{message-id}/cancelSend
  • 权限要求:必须拥有Mail.ReadWrite权限(委托权限需用户授权,应用权限需管理员同意)。

示例代码

cURL 请求示例

curl --request POST \
  --url https://graph.microsoft.com/v1.0/me/messages/{your-message-id}/cancelSend \
  --header 'Authorization: Bearer {your-access-token}'

C# 示例(使用Microsoft Graph SDK)

using Microsoft.Graph;
using Azure.Identity;

var scopes = new[] { "Mail.ReadWrite" };
var clientId = "your-client-id";
var tenantId = "your-tenant-id";
var clientSecret = "your-client-secret";

var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(credential, scopes);

try
{
    await graphClient.Me.Messages["{your-message-id}"]
        .CancelSend()
        .Request()
        .PostAsync();
    Console.WriteLine("邮件撤回请求已提交");
}
catch (ServiceException ex)
{
    Console.WriteLine($"撤回失败: {ex.Message}");
}

关键注意事项

  • 撤回成功率限制:仅能撤回收件人未读取的邮件,若邮件已被读取、转发或移动,撤回操作会失败。
  • 状态查询:撤回请求提交后(返回202 Accepted),可通过查询邮件的cancelSendStatus属性查看最终状态,可选值包括Pending(处理中)、Success(成功)、Failed(失败)。
  • 环境限制:该接口仅支持Exchange Online(Office365),本地Exchange Server环境无法通过此API实现撤回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:50:34