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