我正在开发一个用于 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
字符串未设置为组织者的名称。约会对话框"日程安排助理"清楚地指示了组织者,所以我对Type
如何显示为olRequired
而不是olOrganizer
感到困惑。
对我来说,我不能只使用Type
字段来确定与会者的名册,这对我来说似乎很奇怪。我真的必须根据Recipients
中的名称检查Organizer
属性才能检测Recipients
列表中的组织者吗?
根本不使用收件人类型olOrganizer
(0)。您只能拥有收件人/抄送/密件抄送收件人(映射到约会的olRequired
/olOptional
/olResource
)。
在 MAPI 级别,组织者由收件人上设置的PR_RECIPIENT_FLAGS
中的recipOrganizer
位 (2) 标记。您可以在OutlookSpy中看到该属性(我是其作者) - 选择约会,单击IMessage按钮,转到GetRecipientTable选项卡,选择组织者,选择PR_RECIPIENT_FLAGS
属性,右键单击"查看属性"。
我也遇到过这个问题,正在调查。 对我来说,这绝对看起来像 Outlook 中的一个错误。我已经打开了一个用户之声(对于这个和另一个)。让我们看看Microsoft是否会修复它。 https://outlook.uservoice.com/forums/322590-outlook-for-windows-desktop-application/suggestions/42151741-outlook-vba-wrong-recipient-type-for-organizer-olm