在 EWS 中使用自定义属性创建约会
Create appointment with custom properties in EWS
我尝试将自定义 属性 添加到这样创建的约会中:
var newEvent = new Appointment(service)
{
Start = start,
End = end,
Subject = subject,
ReminderMinutesBeforeStart = 15
};
var extendendProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Address, "organizer",
MapiPropertyType.String);
newEvent.SetExtendedProperty(extendendProperty, organizer);
但问题是,当我尝试从服务器获取此约会时,属性 ExtendedProperty 为空。
此外,我创建了新约会并将 'room' 添加为必需的参加者,当我尝试获得此约会时,我不是从我的日历中而是从房间日历中获得它。
所以,我想将扩展 属性 添加到我的约会中并邀请 'room'。接下来获取房间的所有约会,在这里我想阅读这个 属性。甚至有可能吗?
我阅读了这个主题:EWS Create Appointment in exchange with extra custom properties,据我所知,当我想阅读这个 属性 时,我必须能够访问 ExtendendPropertyDefinition
,并且必须知道此约会的 ID .现在我通过以下代码从 Outlook 下载所有约会:
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(userName));
var calendar = CalendarFolder.Bind(service, folderId, new PropertySet());
return calendar.FindAppointments(new CalendarView(start, stop)).ToList();
编辑
谢谢 Glen Scales!
它几乎可以按我的意愿工作,但有一件事。如果我下载自己的约会,我可以阅读这个额外的 属性,但在该代码中,我从房间日历下载约会。
正如我所想的那样,在创建新约会并根据需要的服务员添加房间时,它会创建他自己的约会,并且不会复制这个额外的 属性。
当我将这个 属性 添加到我的房间时,有什么方法可以从房间预约中获得这个额外的 属性 吗?
您需要先创建一个 属性 集,将要加载的扩展 属性 添加到该 属性 集。然后告诉 EWS 您希望在执行 FindAppointment 方法时返回 属性 请参阅 https://msdn.microsoft.com/en-us/library/office/dd633697(v=exchg.80).aspx 例如在您的示例中
PropertySet YourProperyset = new PropertySet(BasePropertySet.FirstClassProperties);
var extendendProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Address, "organizer",MapiPropertyType.String);
YourProperyset.Add(extendendProperty);
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(userName));
var calendar = CalendarFolder.Bind(service, folderId);
var calendarView = new CalendarView(start, stop);
calendarView.PropertySet = YourProperyset;
return calendar.FindAppointments(calendarView).ToList();
我尝试将自定义 属性 添加到这样创建的约会中:
var newEvent = new Appointment(service)
{
Start = start,
End = end,
Subject = subject,
ReminderMinutesBeforeStart = 15
};
var extendendProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Address, "organizer",
MapiPropertyType.String);
newEvent.SetExtendedProperty(extendendProperty, organizer);
但问题是,当我尝试从服务器获取此约会时,属性 ExtendedProperty 为空。
此外,我创建了新约会并将 'room' 添加为必需的参加者,当我尝试获得此约会时,我不是从我的日历中而是从房间日历中获得它。
所以,我想将扩展 属性 添加到我的约会中并邀请 'room'。接下来获取房间的所有约会,在这里我想阅读这个 属性。甚至有可能吗?
我阅读了这个主题:EWS Create Appointment in exchange with extra custom properties,据我所知,当我想阅读这个 属性 时,我必须能够访问 ExtendendPropertyDefinition
,并且必须知道此约会的 ID .现在我通过以下代码从 Outlook 下载所有约会:
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(userName));
var calendar = CalendarFolder.Bind(service, folderId, new PropertySet());
return calendar.FindAppointments(new CalendarView(start, stop)).ToList();
编辑
谢谢 Glen Scales! 它几乎可以按我的意愿工作,但有一件事。如果我下载自己的约会,我可以阅读这个额外的 属性,但在该代码中,我从房间日历下载约会。
正如我所想的那样,在创建新约会并根据需要的服务员添加房间时,它会创建他自己的约会,并且不会复制这个额外的 属性。
当我将这个 属性 添加到我的房间时,有什么方法可以从房间预约中获得这个额外的 属性 吗?
您需要先创建一个 属性 集,将要加载的扩展 属性 添加到该 属性 集。然后告诉 EWS 您希望在执行 FindAppointment 方法时返回 属性 请参阅 https://msdn.microsoft.com/en-us/library/office/dd633697(v=exchg.80).aspx 例如在您的示例中
PropertySet YourProperyset = new PropertySet(BasePropertySet.FirstClassProperties);
var extendendProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Address, "organizer",MapiPropertyType.String);
YourProperyset.Add(extendendProperty);
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(userName));
var calendar = CalendarFolder.Bind(service, folderId);
var calendarView = new CalendarView(start, stop);
calendarView.PropertySet = YourProperyset;
return calendar.FindAppointments(calendarView).ToList();