使用Microsoft Graph API删除最旧的100封邮件
实现通过Microsoft Graph API删除收件箱中最旧的100封邮件
核心逻辑
要删除最旧的100封邮件,需先按邮件接收时间升序排序(最旧的邮件排在最前),获取前100条记录,再逐一执行删除操作。
完整代码示例
string tenantId = ""; string clientId = ""; string clientSecret = ""; string sMailboxUserObjectId = ""; try { var scopes = new[] { "https://graph.microsoft.com/.default" }; var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); var graphClient = new MG.GraphServiceClient(clientSecretCredential, scopes); // 查询收件箱中最旧的100封邮件,仅返回ID字段以减少数据传输 var oldestMessages = await graphClient .Users[sMailboxUserObjectId] .MailFolders["inbox"] .Messages .GetAsync(requestConfiguration => { requestConfiguration.QueryParameters.Top = 100; requestConfiguration.QueryParameters.Orderby = new[] { "receivedDateTime asc" }; requestConfiguration.QueryParameters.Select = new[] { "id" }; }); // 遍历执行删除操作 if (oldestMessages?.Value != null && oldestMessages.Value.Any()) { foreach (var message in oldestMessages.Value) { await graphClient .Users[sMailboxUserObjectId] .MailFolders["inbox"] .Messages[message.Id] .DeleteAsync(); } } } catch (Exception ex) { // 根据业务需求添加异常处理,例如日志记录 Console.WriteLine($"删除邮件失败:{ex.Message}"); }
重要注意事项
- 权限配置:确保Azure AD应用已被授予
Mail.ReadWrite应用权限,并完成管理员同意流程。 - 性能优化:若需处理更多邮件,可使用Graph批量请求将多个删除操作合并为单次API调用,降低网络开销。
- 分页说明:Graph API默认单页最多返回999条数据,本次仅需前100条,无需处理分页逻辑。
内容的提问来源于stack exchange,提问作者Venkata Praveen
相关产品推荐
相关产品推荐

