Использование EWS Managed API для создания встреч для других пользователей? - PullRequest
11 голосов
/ 10 марта 2010

В EWS Managed API легко создать встречу для конкретного пользователя:

ExchangeService service = new ExchangeService();
service.Credentials = new NetworkCredentials ( "administrator", "password", "domain" );
service.AutodiscoverUrl(emailAddress);

Appointment appointment = new Appointment(service);
appointment.Subject = "Testing";
appointment.Start = DateTime.Now;
appointment.End = appointment.Start.AddHours(1);
appointment.Save();

Это создаст встречу для администратора. Но, скажем, я хотел на самом деле создать встречу для другого пользователя (не добавлять этого пользователя в качестве участника ко мне) Возможно ли это через EWS Managed API?

Ответы [ 3 ]

7 голосов
/ 18 октября 2011
Folder inboxFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Inbox, "user1@example.com"));

тоже будет работать. Затем передайте inboxFolder.id вызову Appointment.Save. Обновления и удаления не нуждаются в этом. Лучший ответ - использовать олицетворение, но для этого требуется, чтобы он был включен администраторами сервера. Если вы не обладаете такой силой, этот метод позволит вам делать то, что вам нужно. Примечание. Пользователь, выполняющий ваше приложение, должен иметь разрешения для целевой учетной записи, иначе это не удастся (как и должно быть).

Найдено здесь: http://msdn.microsoft.com/en-us/library/gg274408(v=EXCHG.80).aspx

7 голосов
/ 11 февраля 2014

Я знаю, что на этот вопрос ответили, но в ответ на комментарий @ Аамира вы можете сделать это с помощью делегатов, которых я только что сделал для проекта, над которым я работаю.

Как @matt предложил в своем ответе, вы можете изменить метод сохранения встречи, чтобы он указывал на папку других пользователей, которая в этом случае была бы Calendar.

Код будет выглядеть так:

Appointment appointment = new Appointment(service);
appointment.Subject = "Testing";
appointment.Start = DateTime.Now;
appointment.End = appointment.Start.AddHours(1);
appointment.Save(new FolderId(WellKnownFolderName.Calendar, new Mailbox(_EmailAddress)));

Надеюсь, что поможет

6 голосов
/ 10 марта 2010

Я понял это из этой статьи: http://msdn.microsoft.com/en-us/library/dd633680(EXCHG.80).aspx

Вы должны использовать атрибут service.ImpersonatedUserId.

...