C# EWS API-创建日历并与审阅者共享权限

C# EWS API-创建日历并与审阅者共享权限,c#,exchange-server,exchangewebservices,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"),

使用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'具有正确的权限


问题是:日历没有显示在审阅者的帐户上。

您必须做两件事:

设置适当的权限:

var folder = Folder.Bind(service, WellKnownFolderName.Calendar);
folder.Permissions.Add(new FolderPermission("someone@yourcompany.com", 
    FolderPermissionLevel.Reviewer));
folder.Update();
然后,发送邀请消息。现在,这是最难的部分。消息格式在中指定。扩展属性在中定义。您需要根据该规范创建消息并将其发送给收件人

编辑:

要设置元素的共享属性,请使用扩展属性

首先,定义属性。例如,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");

我了解了如何通过EWS以编程方式在组织内发送共享邀请。可能无法回答您所有的问题,但这是一个很好的开始,可以帮助您了解实际操作的深度。

您所说的“不在审阅者帐户上显示”是什么意思?审阅者是否可以使用Outlook打开日历?文件->打开->其他用户文件夹。我尝试使用审阅者帐户打开他的日历,但没有成功,但无论如何,我希望与EWS API共享日历,而无需使用outlook来完成此过程。我是否正确理解您要创建共享邀请邮件?当您右键单击日历并选择“共享->共享日历”时Outlook创建的日历?正确,这正是我想要做的!如何获取此类值:PidNameXSharingProviderGuid、PidLidSharingFlavor、PidNameXSharingFlavor、PidLidSharingCapabilities、PidNameXSharingCapabilities等?添加了一个关于如何设置项属性的示例。我应该在哪里看到这些“SomeValue”必须是什么/这是我在回答中提到的规格说明。