【问题标题】:Appointment EntryID after meeting response会议响应后的约会EntryID
【发布时间】:2022-04-28 13:08:49
【问题描述】:

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

【问题讨论】:

    标签: c# outlook vsto


    【解决方案1】:

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

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

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

    【讨论】:

    • 使用GlobalAppointmentId 对我来说真的很有帮助,它在预约更新后不会改变,所以我可以轻松使用它,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2012-08-15
    相关资源
    最近更新 更多