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
我正在开发用于 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