Outlook 2013 VSTO:如何获取约会的原始MeetingItem?

时间:2015-06-12 05:06:05

标签: outlook vsto

我正在处理加载项,作为我工作的一部分,我需要能够接受会议请求。我需要能够在收件箱中选择MeetingItem时从Mail选项卡执行此操作,并在选择AppointmentItem时从Calendar选项卡执行此操作。

对于给定的MeetingItem,我可以使用内置的.GetAssociatedAppointment()来获得相应的约会。然后在conferenceItem上做一个.Respond()和在sessionItem上做一个.Send()很容易。

但是,当我在日历视图中并且只有选定的AppointmentItem时,是否有一种有效的向后工作方式?我需要能够在收件箱中找到原始的MeetingItem,如果它仍然存在(用户可以删除它并且约会项目仍然在日历上可见)。 我相信我可以遍历收件箱中的所有项目,并且对于每个MeetingItem,获取相关的约会项目,并查看其GlobalAppointmentID是否等于在日历中选择的appointmentItem的GlobalAppointmentID - 如果是这样,那么' s最初的MeetingItem。

有更好的方法吗?我知道收件箱项目集合中的.Filter()和.Find(),但看到我需要首先获取相关的约会项目,以查看会议项目是否与我的appointmentItem对应的项目日历,我不认为我可以使用过滤器(传递给.Filter()或.Find())。

似乎有一种相对简单的方法来获取给定的约会项的原始meetingItem。

任何帮助?

1 个答案:

答案 0 :(得分:1)

按约会ID搜索是唯一的方法。没有其他办法,因为在收件箱和已发送邮件文件夹中的约会和(可能)多个会议项目之间没有一对一的对应关系。

另请注意,Outlook对象模型不允许您搜索二进制(PT_BINARY)属性,例如GlobalAppointmentID或CleanGlobalObjectId。您需要使用扩展MAPI(C ++或Delphi)或Redemption(任何语言)。