会议响应后的Appointment EntryID

本文关键字:Appointment EntryID 响应 会议 | 更新日期: 2023-09-27 18:08:15

我正在使用VSTO (c#)创建Outlook插件,我有一个问题如何控制约会的EntryID。每个约会都有他唯一的EntryID,这很好,我保存了这个ID,它帮助我将Outlook的日历与我系统中的日历同步。问题是当有人发送更新到会议,我接受这个- Outlook的项目是更新的,但EntryID是不同的。我读到,在这个过程中,旧的项目被删除,新的项目是基于前一个创建的。是否有任何事件可以帮助我捕获旧会议,获取他的EntryID,然后捕获新会议,获取他的EntryID,并允许我更新系统中的会议EntryID ?

会议响应后的Appointment EntryID

您可以尝试使用Items.Item.Add/ItemRemove事件,但我认为它不可靠,特别是ItemRemove事件不传递任何关于删除项的信息。

您确实需要避免使用条目id作为约会的标识符—使用GlobalAppointmentId。它永远不会改变,即使在不同的邮箱中,相同的约会也将具有相同的GlobalAppointmentId值。请记住,Outlook在处理会议更新时删除和重新创建约会-这将更改条目id,但保持GlobalAppointmentId不变。

不幸的是,唯一的问题是OOM将不允许您在Items.Find/FindNext/Restrict中搜索GlobalAppointmentId(或任何其他PT_BINARY属性)。唯一的解决方法是循环遍历日历文件夹中的所有项目(效率极低)或使用扩展MAPI(仅限c++或Delphi)或Redemption(我是其作者-任何语言,其RDOFolder . items版本)进行搜索。Find允许在GlobalAppointmentId上搜索