Мы используем EWS для интеграции нашей CRM с Exchange Online 2010SP2.Одна из задач: предоставить один календарь для менеджеров по продажам со следующим правилом: каждый Менеджер по продажам может видеть все встречи в Планировщике, но может открывать и видеть детали (тело) только его / ее собственную встречу.Назначение размещается CRM в ответ на определенные деловые события.Мы пытались использовать свойство impersonate и Sensitivity.Private.Встреча размещается с олицетворенным именем пользователя, но она не может быть открыта этим пользователем ни через OWA, ни через Outlook.Таким образом, он помещается как личное назначение «основного» пользователя (пользователь, который создал общий календарь и его учетные данные используется для подключения к службе), он может открыть его в Outlook или OWA.EWSEditor показывает назначение LastModifiedUser - правильное олицетворенное имя пользователя (не владельца).В Fiddler мы можем увидеть «успешный» ответ на запрос о назначении встречи (от имени пользователя).В OutlookSpy мы видим, что в свойствах PR_SENDER_NAME_W, PR_SENT_REPRESENTING_NAME_W отображаются имена пользователей "master".Мы застряли.
Олицетворенный пользователь имеет права владельца на этот общий календарь.
Если Олицетворение не решает эту проблему, может ли метод делегирования сделать это?
Спасибо ваванс за любую помощь.
static void Main(string[] args)
{
ExchangeService services = new
ExchangeService(ExchangeVersion.Exchange2010_SP2);
services.Credentials = new WebCredentials("master@exchserver.com",
"MasterPwd");
services.Url = new Uri("https://someserver.com/ews/exchange.asmx");
FolderId rfRootFolderid = new FolderId(WellKnownFolderName.Calendar);
FolderView fvFolderView = new FolderView(100);
DateTime startDate = DateTime.Now.AddDays(1);
DateTime endDate;
string SalesCalendarId = "AAMkADVlMGVjZWVkLT....AADo8XAAA=";
CalendarFolder folder = CalendarFolder.Bind(services, new
FolderId(SalesCalendarId));
TimeSpan ts = new TimeSpan(10, 00, 0);
startDate = startDate.Date + ts;
endDate = startDate.AddMinutes(60);
services.HttpHeaders.Add("X-AnchorMailbox","impersonateduser@exchserver.com");
appointment.Subject = "from Test";
appointment.Body = "Test";
appointment.Start = startDate;
appointment.End = appointment.Start.AddMinutes(30);
appointment.ReminderDueBy = appointment.Start.AddHours(1);
appointment.Sensitivity = Sensitivity.Private;
ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "impersonateduser@exchserver.com");
appointment.Save(SalesCalendarId, SendInvitationsMode.SendToNone);
}