EWS API – 创建日历并与审阅者权限共享

我在使用Exchange Webservice API .NET创建和共享具有审阅权限的日历时遇到了一些麻烦。

目前这是我的代码:

Folder addCalendar = new Folder(service); addCalendar.DisplayName = name; addCalendar.FolderClass = "IPF.Appointment"; var perm = new FolderPermission(new UserId("reviewer@test.com"), FolderPermissionLevel.Reviewer); addCalendar.Permissions.Add(perm); addCalendar.Save(WellKnownFolderName.MsgFolderRoot); 

日历已创建,在我的帐户中,我可以看到日历,用户’reviewer@test.com’具有正确的权限。

问题是: 日历不会显示在审阅者的帐户中。

我想出了如何通过EWS以编程方式在组织内发送共享邀请。 可能无法解答您的所有问题,但这是一个很好的开始,了解您必须深入了解实际情况。 inheritance人的链接

你必须做两件事:

设置适当的权限:

 var folder = Folder.Bind(service, WellKnownFolderName.Calendar); folder.Permissions.Add(new FolderPermission("someone@yourcompany.com", FolderPermissionLevel.Reviewer)); folder.Update(); 

然后,发送邀请消息。 现在,这是困难的部分。 消息格式在[MS-OXSHARE]:共享消息对象协议规范中指定 。 扩展属性在[MS-OXPROPS]:Exchange Server协议主属性列表中定义 。 您需要根据该规范创建消息并将其发送给收件人。

编辑:

要在元素上设置共享属性,请使用扩展属性。

首先,定义属性。 例如,PidLidSharingProviderGuidProperty定义如下:

 private static readonly Guid PropertySetSharing = new Guid("{00062040-0000-0000-C000-000000000046}"); private static readonly ExtendedPropertyDefinition PidLidSharingProviderGuidProperty = new ExtendedPropertyDefinition(PropertySetSharing, 0x8A01, MapiPropertyType.CLSID); private static readonly ExtendedPropertyDefinition ConversationIdProperty = new ExtendedPropertyDefinition(0x3013, MapiPropertyType.Binary); 

然后,您可以使用SetExtendedProperty方法在新项目上设置属性:

 item.SetExtendedProperty(PidLidSharingProviderGuidProperty, "somevalue");