如何通过Microsoft Graph实现Outlook邮件Snooze(稍后处理)功能
实现Outlook邮件“稍后处理(Snooze)”功能的正确Graph API方案
要实现Outlook原生的Snooze功能——将邮件移至「稍后处理」文件夹,到指定时间自动回到收件箱并标记为新邮件——仅设置单个扩展属性或普通跟进标记是不够的,需要结合服务器端提醒配置、扩展属性设置和文件夹移动操作三步完成。
问题分析
你之前尝试的两种方式存在关键缺失:
- 仅添加
SystemTime 0xf07属性:这只是存储了Snooze时间,但没有触发Exchange服务器的自动移回逻辑,也没有将邮件放到对应的Snooze文件夹。 - 设置
startDateTime/dueDateTime:这是任务跟进的时间参数,并非触发Snooze提醒的参数,Outlook不会以此作为自动移回的依据。
完整解决方案步骤
1. 获取「稍后处理」文件夹ID
首先需要找到Outlook自动创建的Snooze文件夹(中文名称为「稍后处理」,英文为「Snooze」),通过以下请求查询:
GET https://graph.microsoft.com/v1.0/me/mailFolders?$filter=displayName eq '稍后处理'
返回结果中的id字段即为目标文件夹ID,后续移动邮件时需要用到。
2. 配置邮件的Snooze属性与提醒
通过PATCH请求设置邮件的提醒时间、Snooze扩展属性,同时标记提醒已启用:
PATCH https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages/{你的邮件ID} Content-Type: application/json { "flag": { "flagStatus": "flagged", "reminderDateTime": { "dateTime": "2024-04-26T09:45:00Z", // 1小时后的UTC时间 "timeZone": "UTC" } }, "singleValueExtendedProperties": [ { "id": "SystemTime 0xf07", "value": "2024-04-26T09:45:00Z" // 与reminderDateTime保持一致 }, { "id": "Integer 0x0E07", "value": "16384" // 标记邮件已设置提醒 } ] }
reminderDateTime是触发服务器自动操作的核心参数,必须与Snooze时间一致。0x0E07是邮件的MessageFlags属性,值16384对应mfReminderSet,告知Outlook邮件已启用提醒。
3. 将邮件移动到「稍后处理」文件夹
完成属性配置后,通过move操作将邮件移入Snooze文件夹:
POST https://graph.microsoft.com/v1.0/me/messages/{你的邮件ID}/move Content-Type: application/json { "destinationId": "{步骤1获取的Snooze文件夹ID}" }
验证效果
完成以上操作后,Exchange服务器会在指定的时间自动:
- 将邮件从「稍后处理」文件夹移回收件箱
- 将邮件标记为未读(显示为新邮件)
- 触发Outlook的提醒通知
内容的提问来源于stack exchange,提问作者John Park
相关产品推荐
相关产品推荐

