EWS API - создайте календарь и поделитесь с ним полномочиями рецензента - PullRequest
5 голосов
/ 21 сентября 2011

У меня возникли проблемы при создании и совместном использовании календаря с разрешениями на просмотр с помощью 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' есть правильные разрешения.

Проблема: Календарь не отображается на аккаунте рецензента.

Ответы [ 2 ]

3 голосов
/ 15 апреля 2012

Я понял, как программно отправить приглашение на обмен внутри организации через EWS. Может не отвечать на все ваши вопросы, но это хорошее начало для понимания того, насколько глубоко вы действительно должны это сделать. Вот ссылка

3 голосов
/ 27 сентября 2011

Вы должны сделать две вещи:

Установите соответствующие разрешения:

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

Затем отправьте сообщение с приглашением. Теперь это сложная часть. Формат сообщения указывается в [MS-OXSHARE]: спецификация протокола объекта общего сообщения . Расширенные свойства определены в [MS-OXPROPS]: список основных свойств протоколов сервера Exchange . Вам необходимо создать сообщение в соответствии с этой спецификацией и отправить его получателю.

РЕДАКТИРОВАНИЕ:

Чтобы установить общие свойства для элемента, используйте расширенные свойства.

Сначала определите свойства. Например, 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...