会议响应后的约会EntryID

时间:2016-09-21 20:19:27

标签: c# outlook vsto

我正在使用VSTO(C#)为Outlook创建一个插件,我遇到了如何控制约会的EntryID的问题。每个约会都有他唯一的EntryID,没关系,我正在保存这个ID,这有助于我将Outlook的日历与我系统中的日历同步。问题是当有人向会议发送更新时我接受了这一点 - Outlook的项目已更新,但EntryID不同。我已经读过在此过程中删除旧项目并根据前一项创建新项目。 是否有任何事件可以帮助我抓住旧会议,获取他的EntryID,然后赶上新会议,获得他的EntryID,它将允许我更新我的系统中的会议EntryID?

1 个答案:

答案 0 :(得分:1)

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

您确实需要避免使用条目ID作为约会的标识符 - 使用GlobalAppointmentId。它永远不会改变,即使在不同的邮箱中,同一个约会也具有相同的GlobalAppointmentId值。

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