我正在开发一个用于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
列表中的组织者?
答案 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