会议响应后的约会 EntryID
Appointment EntryID after meeting response
我正在使用 VSTO (C#) 创建 Outlook 插件,但我遇到了如何控制约会的 EntryID 的问题。每个约会都有他唯一的 EntryID,没关系,我正在保存这个 ID,它可以帮助我将 Outlook 的日历与我系统中的日历同步。问题是当有人向会议发送更新并且我接受时 - Outlook 的项目已更新但 EntryID 不同。我读过,在此过程中,旧项目被删除,新项目是基于前一个项目创建的。
是否有任何事件可以帮助我赶上旧会议,获得他的 EntryID,然后赶上新会议,也获得他的 EntryID,这将允许我在我的系统中更新会议 EntryID?
你可以尝试使用Items.Item.Add
/ItemRemove
事件,但我认为它不可靠,尤其是ItemRemove
事件不传递任何关于删除的信息项目。
您确实需要避免使用条目 ID 作为约会的标识符 - 使用 GlobalAppointmentId
。它永远不会改变,即使在不同的邮箱中,相同的约会也会具有相同的 GlobalAppointmentId
值。请记住,Outlook 在处理会议更新时删除并重新创建约会 - 这将更改条目 ID,但保持 GlobalAppointmentId
不变。
不幸的是,唯一的问题是 OOM 不会让您在 Items.Find
/[=19= 中搜索 GlobalAppointmentId
(或任何其他 PT_BINARY
属性) ]/Restrict
。唯一的解决方法是循环遍历日历文件夹中的所有项目(效率极低)或使用扩展 MAPI(仅限 C++ 或 Delphi)进行搜索,或者 Redemption (I am its author - any language, its version of RDOFolder
.Items。Find
允许搜索 GlobalAppointmentId
)
我正在使用 VSTO (C#) 创建 Outlook 插件,但我遇到了如何控制约会的 EntryID 的问题。每个约会都有他唯一的 EntryID,没关系,我正在保存这个 ID,它可以帮助我将 Outlook 的日历与我系统中的日历同步。问题是当有人向会议发送更新并且我接受时 - Outlook 的项目已更新但 EntryID 不同。我读过,在此过程中,旧项目被删除,新项目是基于前一个项目创建的。 是否有任何事件可以帮助我赶上旧会议,获得他的 EntryID,然后赶上新会议,也获得他的 EntryID,这将允许我在我的系统中更新会议 EntryID?
你可以尝试使用Items.Item.Add
/ItemRemove
事件,但我认为它不可靠,尤其是ItemRemove
事件不传递任何关于删除的信息项目。
您确实需要避免使用条目 ID 作为约会的标识符 - 使用 GlobalAppointmentId
。它永远不会改变,即使在不同的邮箱中,相同的约会也会具有相同的 GlobalAppointmentId
值。请记住,Outlook 在处理会议更新时删除并重新创建约会 - 这将更改条目 ID,但保持 GlobalAppointmentId
不变。
不幸的是,唯一的问题是 OOM 不会让您在 Items.Find
/[=19= 中搜索 GlobalAppointmentId
(或任何其他 PT_BINARY
属性) ]/Restrict
。唯一的解决方法是循环遍历日历文件夹中的所有项目(效率极低)或使用扩展 MAPI(仅限 C++ 或 Delphi)进行搜索,或者 Redemption (I am its author - any language, its version of RDOFolder
.Items。Find
允许搜索 GlobalAppointmentId
)