2010-03-10 2 views
9

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

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

+1

@Alfred. Можете ли вы рассказать мне, где чертовски установлен управляемый API DLL. Я не могу найти его где-нибудь на моей машине .... Большое спасибо. – brumScouse

+1

@brumScouse. Вместо комментария вы должны опубликовать новый вопрос. В любом случае, управляемая API-библиотека DLL не установлена ​​с Exchange Server. Вы должны загрузить его из Microsoft и установить на свой компьютер. С этой даты самую последнюю версию можно найти по адресу http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c3342fb3-fbcc-4127-becf-872c746840e1 –

+0

@brumScouse после выполнения инструкций Альфреда. DLL будет найден в таком же месте: C: \ Program Files \ Microsoft \ Exchange \ Web Services \ 2.2 –

ответ

5

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

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

+0

Любой шанс сделать это можно с помощью делегирования. Я знаю, что мы можем создавать и управлять делегатом с использованием EWS API, но не знаем, есть ли способ использовать делегирование для создания встреч и т. Д. – Aamir

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

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

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

+1

спасибо! Это работает, но это должно быть ** WellKnownFolderName.Calendar ** вместо ** WellKnownFolderName.Inbox **. – Ephedra

5

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

Как предложил @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))); 

Надежда, что помогает

Смежные вопросы