Can*_*tro 5 c# exchange-server exchangewebservices
我在使用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);
Run Code Online (Sandbox Code Playgroud)
日历已创建,在我的帐户中,我可以看到日历,用户'reviewer@test.com'具有正确的权限.
问题是:日历不会显示在审阅者的帐户中.
你必须做两件事:
设置适当的权限:
var folder = Folder.Bind(service, WellKnownFolderName.Calendar);
folder.Permissions.Add(new FolderPermission("someone@yourcompany.com",
FolderPermissionLevel.Reviewer));
folder.Update();
Run Code Online (Sandbox Code Playgroud)
然后,发送邀请消息。现在,这是困难的部分。消息格式在[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);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用 SetExtendedProperty 方法在新项目上设置属性:
item.SetExtendedProperty(PidLidSharingProviderGuidProperty, "somevalue");
Run Code Online (Sandbox Code Playgroud)