在EWS中创建自定义属性的约会

时间:2015-09-03 14:02:52

标签: c# outlook exchange-server exchangewebservices

我尝试添加自定义属性来创建这样的约会:

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为空。

此外,我创建新约会并添加'房间'作为必要的与会者,当我尝试预约时,我不会从我的日历中获取它,而是从房间日历中获取。

所以,我想在我的约会中添加extend属性并邀请'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! 它几乎按照我的意愿工作,但有一点。如果我下载自己的约会,我可以阅读这个附加属性,但在该代码中我从房间日历下载约会。

正如我想的那样,在创建新约会并将空间添加为所需的服务员时,它会创建自己的约会,并且不会复制此附加属性。

当我将此属性添加到我的

时,是否可以从房间预约中获取此额外属性?

1 个答案:

答案 0 :(得分:0)

您需要先创建一个属性集,将要加载的扩展属性添加到该属性集。然后告诉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();