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

时间:2018-04-19 18:26:21

标签: vsto outlook-addin

我正在开发一个用于Outlook的VSTO加载项,用C#编写为WFP应用程序,并且在Outlook为当前所选约会提供的数据中遇到了不一致。

我的加载项从约会对话框中的按钮执行。以下是我用来从对话框中访问信息的主要声明:

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字段来确定与会者的滚动,这似乎很奇怪。我是否真的必须根据Organizer中的名称检查Recipients属性,才能检测Recipients列表中的组织者?

2 个答案:

答案 0 :(得分:1)

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

在MAPI级别,组织者在收件人的recipOrganizer集中由PR_RECIPIENT_FLAGS位(2)标记。您可以在OutlookSpy中看到该属性 - 选择约会,单击IMessage按钮,转到GetRecipientTable选项卡,选择管理器,选择PR_RECIPIENT_FLAGS属性,右键单击,“查看属性”。

答案 1 :(得分:0)

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