使用Microsoft Graph API将邮件移至已删除邮件文件夹的实现方法
将邮件移至已删除邮件文件夹的实现方法
你不需要使用DeleteAsync()(该方法会直接永久删除邮件),而是通过MoveAsync相关方法将邮件移动到「已删除邮件」文件夹,具体实现如下:
- 利用Graph API内置的
WellKnownFolderName.DeletedItems枚举值,直接定位目标用户的「已删除邮件」文件夹,无需手动查询文件夹ID - 对每封目标邮件调用移动接口,指定目标文件夹为已删除邮件文件夹
修改后的代码示例:
using Microsoft.Graph.Models; // 直接使用枚举值定位已删除邮件文件夹 var deletedFolderIdentifier = WellKnownFolderName.DeletedItems.ToString(); foreach (Microsoft.Graph.Models.Message currMessage in emails) { string msgId = currMessage.Id; string sender = currMessage.From.EmailAddress.Address; string subject = currMessage.Subject; string receivedDate = currMessage.ReceivedDateTime.Value.ToLocalTime().ToString("dd/MM/yyyy hh:mm tt"); // 构造移动请求参数 var moveRequest = new MovePostRequestBody { DestinationId = deletedFolderIdentifier }; // 执行移动操作,将邮件移入已删除邮件文件夹 await graphClient.Users[emailUser] .Messages[msgId] .Move .PostAsync(moveRequest); }
补充说明
- 该操作和手动在Outlook中删除邮件的行为完全一致,邮件会保留在已删除邮件文件夹中,可后续恢复
- 若需要更灵活的文件夹定位,也可以先调用
graphClient.Users[emailUser].MailFolders.Request().GetAsync()查询所有文件夹,筛选出「已删除邮件」文件夹的ID后使用
内容的提问来源于stack exchange,提问作者NootNoobJoe
相关产品推荐
相关产品推荐

