启用Office 365共享日历改进功能后Outlook插件StoreID获取异常
问题解答
这是已知的行为变更
启用Office 365「Shared Calendar Improvements」功能后,共享日历的会议存储机制发生了设计变更:会议不再直接存储在共享日历的邮箱存储中,而是保存在创建者自身的主邮箱存储里,仅通过视图层映射显示在共享日历中。这就导致你通过aptItem.Parent获取的文件夹是创建者的主日历文件夹,而非共享日历文件夹,因此返回的StoreID是主日历的。
解决办法
可以通过AppointmentItem.GetSharedRecipient()方法获取共享日历对应的收件人对象,再通过该收件人获取其邮箱的StoreID:
Recipient sharedRecipient = aptItem.GetSharedRecipient(); if (sharedRecipient != null) { Store sharedStore = sharedRecipient.AddressEntry.GetExchangeUser().GetExchangeUserStore(); storeId = sharedStore.ID; }
兼容性提示
- 未启用共享日历改进功能时,你的原代码依然有效,建议在代码中添加场景判断,兼容两种模式。
- 若共享日历属于Exchange组或团队,需调整逻辑:通过
GetSharedRecipient()获取组对象后,再获取对应的存储ID。
官方说明
微软明确指出,共享日历改进功能通过改变共享事件的存储模型来提升性能与协作体验,上述行为是功能设计的预期结果,不属于bug范畴。
内容的提问来源于stack exchange,提问作者ManojP
相关产品推荐
相关产品推荐

