outlook约会会议组织者信息不一致

Outlook appointment meeting organizer information inconsistent

我正在开发用于 Outlook 的 VSTO add-in,作为 WFP 应用程序用 C# 编写,并且 运行 发现 Outlook 为当前选定约会提供的数据不一致。

我的 add-in 通过约会对话框中的按钮执行。以下是我用来从对话框访问信息的主要声明:

Outlook.Application app = Globals.MyAddInApp.Application;
Outlook.AppointmentItem appt =
    app.ActiveInspector().CurrentItem as Outlook.AppointmentItem;

如果我打开现有会议并查看 appt 中的信息,appt.Organizer 会按预期为我提供会议组织者的姓名。但是,如果我检查 appt.Recipients:

string organizer;

foreach (Outlook.Recipient attendee in appt.Recipients)
{
    switch ((Outlook.OlMeetingRecipientType)attendee.Type)
    {
         case Outlook.OlMeetingRecipientType.olOrganizer:
             organizer = attendee.Name;
             break;
         case Outlook.OlMeetingRecipientType.olRequired:
             // ...
             break;
         case Outlook.OlMeetingRecipientType.olOptional:
             // ...
             break;
         case Outlook.OlMeetingRecipientType.olResource:
             // ...
             break;
     }
}

我发现会议组织者的类型是 olRequired 而不是 olOrganizer。上面代码中的 organizer 字符串没有设置为组织者的名字。约会对话框 "Scheduling Assistant" 清楚地表明了组织者,所以我很困惑 Type 是如何显示为 olRequired 而不是 olOrganizer

我不能只使用 Type 字段来确定与会者的名单,这对我来说似乎很奇怪。我真的必须根据 Recipients 中的名称检查 Organizer 属性以检测 Recipients 列表中的组织者吗?

收件人类型olOrganizer (0) 根本没有使用。您只能有 To / CC / BCC 收件人(映射到 olRequired / olOptional / olResource 用于约会)。

在 MAPI 级别,组织者由收件人 PR_RECIPIENT_FLAGS 中的 recipOrganizer 位 (2) 标记。您可以在OutlookSpy(我是它的作者)-select约会中看到属性,单击IMessage按钮,转到GetRecipientTable选项卡,select组织者,selectPR_RECIPIENT_FLAGS属性,右击,“查看属性”。

我也遇到过这个问题,正在调查中。 在我看来,这绝对像是 Outlook 中的错误。我已经打开了一个 uservoice(对于这个和另一个)。让我们看看微软是否会修复它。 https://outlook.uservoice.com/forums/322590-outlook-for-windows-desktop-application/suggestions/42151741-outlook-vba-wrong-recipient-type-for-organizer-olm