产生条件
- 使用 Outlook 2016 和 Outlook for iOS 登录基于 Exchange 的 Outlook.com 邮箱
- 在 Outlook 2016 里建立一个 appointment (不含有其他人的日历事件)
- 在 Outlook.com 上把你自己从参与者里删除
症状
- 在步骤 2 之后,在 Outlook for iOS 上,你将会看到这个 appointment 变成了 meeting (含有其他人的日历事件),组织者是
legacyExchangeDN格式的你自己,参与者是 SMTP email 地址的你自己。 - 在步骤 3 之后,在 Outlook for iOS 上这个事件会显示为 appointment,但是 Outlook 2016 将会认为这是一个 meeting,且没有其他参与者。
绕过方案
- 方案 1:总是使用 Outlook.com / Outlook for iOS 建立事件。这样建立的约会在所有端都会显示为约会而不是会议。
- 方案 2:总是使用 Outlook object model,不用图形界面建立事件。如果你不调用
AppointmentItem.GetOrganizer也不设置AppointmentItem.MeetingStatus,那么AppointmentItem.Recipients将是空白列表,这样建立的约会也可以在所有端正确显示。 - 方案 3:使用我书写的、MIT 授权的 一段代码 来修复一个日历事件(要查看代码,点 Show the code,默认是折叠状态)。你可以把它添加为
AppointmentItem.Write的事件处理程序,这样每次保存之前都可以自动修复这个事件。
在我的 blog 上了解更多我对于这个 bug 的分析
提醒:这个分析非常详细,是我目前写过最长的 troubleshooting 文章了。我已经就此问题联系 Microsoft 并敦促他们解决。然而我在他们第一次回电之前就完成了这一坨分析。