Я разрабатываю надстройку Outlook VSTO на C#. Мне нужно прочитать существующие встречи из общих календарей, чтобы увидеть занятые временные интервалы. У меня есть разрешение редактора публикации на все общие календари, и он работает с неединственными встречами без проблем.Доступ к частным встречам в общем календаре из надстройки Outlook
Моя единственная проблема в том, что CalendarFolder.Items коллекция не содержит предметы, имеющие назначение olPrivate или настройки olPersonal чувствительности. В то время как встроенный просмотр календаря Outlook показывает эти элементы с маленьким значком блокировки.
Я понимаю, что частные встречи выставляют только время начала и окончания, и для меня это было бы абсолютно для меня.
Основная версия Обмен сервера 2013. Мы используем Outlook 2013 и 2016.
Любая идея, что может привести к этому?
спасибо.
UPDATE:
Наконец я нашел решение этой проблемы с помощью EWS Managed API 2.0.
using Microsoft.Exchange.WebServices.Data;
// ......
ExchangeService EWSService = new ExchangeService();
EWSService.Credentials = new WebCredentials("EXCHUser", "EXCHPW");
EWSService.Url = new Uri("https://...../EWS/Exchange.asmx");
Mailbox primary = new Mailbox(Tools.MainWindow.SelectedConsultant.Email);
var calendar = Microsoft.Exchange.WebServices.Data.CalendarFolder.Bind(EWSService,
new FolderId(WellKnownFolderName.Calendar, primary));
ItemView cView = new ItemView(100);
// Limit the properties returned to the appointment's subject,
// start time, end time and sensitivity.
cView.PropertySet = new PropertySet(AppointmentSchema.Subject,
AppointmentSchema.Start,
AppointmentSchema.End,
AppointmentSchema.Sensitivity);
// Filter by sensitivity and retrieve a collection of appointments by using the item view.
String SearchFilterValue = Sensitivity.Private.ToString();
SearchFilter.IsEqualTo filter = new SearchFilter.IsEqualTo(AppointmentSchema.Sensitivity, SearchFilterValue);
FindItemsResults<Item> appointments = calendar.FindItems(filter, cView);
foreach (Appointment a in appointments)
{
if (a.Sensitivity == Sensitivity.Private)
{
// Do what you want with the matched item
}
}
// ......
Имейте в виду, что EWS требует, чтобы вы предоставили учетные данные, и, поскольку вы работаете с онлайн-почтовым ящиком, данные могут быть не синхронизированы с тем, что вы видите в Outlook. Данные есть локально, вам просто нужно обойти OOM с Extended MAPI или Redemption. –
Да, я знаю, спасибо. В моей нынешней ситуации это приемлемый компромисс. – Hudgi