Используете управляемый API EWS для создания встреч для других пользователей?

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

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();

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


person Kyle    schedule 10.03.2010    source источник
comment
@Альфред. Можете ли вы сказать мне, где, черт возьми, установлена ​​DLL Managed API? Я нигде не могу найти его на своей машине .... Большое спасибо.   -  person brumScouse    schedule 11.01.2011
comment
@brumScouse. Вместо комментария вы должны задать новый вопрос. В любом случае DLL Managed API не устанавливается вместе с Exchange Server. Вам необходимо скачать его с сайта Microsoft и установить на свой компьютер. На эту дату самую последнюю версию можно найти по адресу microsoft.com/downloads/en/   -  person Alfred Myers    schedule 12.01.2011
comment
@brumScouse после выполнения инструкций Альфреда DLL будет найдена в месте, похожем на это: C: \ Program Files \ Microsoft \ Exchange \ Web Services \ 2.2   -  person Oran Dennison    schedule 16.08.2014


Ответы (3)


Folder inboxFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Inbox, "[email protected]"));

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

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

person matt    schedule 18.10.2011
comment
Благодарность! Это работает, но это должно быть WellKnownFolderName.Calendar вместо WellKnownFolderName.Inbox. - person Ephedra; 03.09.2014

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

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

Код будет выглядеть, как показано ниже

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)));

надеюсь, это поможет

person Philip Windsor    schedule 11.02.2014

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

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

person Kyle    schedule 10.03.2010
comment
Есть шанс, что это можно сделать с помощью делегирования. Я знаю, что мы можем создавать делегатов и управлять ими с помощью EWS API, но не знаю, есть ли способ использовать делегирование для создания встреч и т. Д. - person Aamir; 22.01.2014