Использование EWS Managed API для создания встреч для других пользователей?
В 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 ответа
Я понял это из этой статьи: http://msdn.microsoft.com/en-us/library/dd633680(EXCHG.80).aspx
Вы должны использовать service.ImpersonatedUserId
приписывать.
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
Я знаю, что на это ответили, но в ответ на комментарий @Aamir вы можете сделать это с помощью делегатов, которых я только что сделал для проекта, над которым я работаю.
Как предложил @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)));
надеюсь, это поможет