You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过EWS或Graph在Outlook/M365中编程设置邮件提醒?

实现M365日历条目的邮件提醒功能

Outlook的邮件提醒并非仅靠单个MAPI属性触发,你看到的0x804C只是表象,核心需要配合多个属性和Exchange服务器的机制。以下是两种API的具体实现方案:

使用Microsoft Graph API

Graph没有直接暴露“邮件提醒”的专属字段,但可通过设置扩展属性模拟原生行为,关键是同时配置三个核心属性:

  • 0x804CPidLidReminderSet):设为true
  • reminderMinutesBeforeStart:设置提前提醒的分钟数(如30)
  • 0x8051PidLidReminderOverride):设为true(覆盖默认弹窗行为,触发邮件提醒)

创建事件时通过singleValueExtendedProperties字段添加这些属性:

{
  "subject": "测试邮件提醒事件",
  "start": {
    "dateTime": "2024-10-01T10:00:00",
    "timeZone": "China Standard Time"
  },
  "end": {
    "dateTime": "2024-10-01T11:00:00",
    "timeZone": "China Standard Time"
  },
  "reminderMinutesBeforeStart": 30,
  "singleValueExtendedProperties": [
    {
      "id": "Boolean {00062008-0000-0000-C000-000000000046} Id 0x804C",
      "value": "true"
    },
    {
      "id": "Boolean {00062008-0000-0000-C000-000000000046} Id 0x8051",
      "value": "true"
    }
  ]
}

使用EWS(Exchange Web Services)

EWS可直接设置扩展MAPI属性,创建CalendarItem时需同时配置三个关键属性:

// 设置提醒提前30分钟
calendarItem.ReminderMinutesBeforeStart = 30;

// 添加扩展属性:启用提醒
ExtendedPropertyDefinition reminderSetProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, 0x804C, MapiPropertyType.Boolean);
calendarItem.SetExtendedProperty(reminderSetProp, true);

// 添加扩展属性:覆盖默认弹窗,触发邮件提醒
ExtendedPropertyDefinition reminderOverrideProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, 0x8051, MapiPropertyType.Boolean);
calendarItem.SetExtendedProperty(reminderOverrideProp, true);

关键注意事项

  • 仅设置0x804C无效,必须同时配置0x8051reminderMinutesBeforeStart,三者共同触发邮件提醒。
  • 邮件提醒由Exchange服务器发送,需确保账号有接收权限,且服务器提醒功能未被管理员禁用。
  • 测试建议创建10分钟后启动的事件,等待服务器触发(邮件提醒存在一定延迟,不要立即检查)。

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

火山引擎 最新活动