Я пытаюсь получить общие календари из outlook в c #, используя приведенный ниже пример ( Отображение общего календаря получателя )
Попытка выполнить итерацию по папке. Элементы повыполнение foreach (Microsoft.Office.Interop.Outlook.AppointmentItem item in outlookCalendarItems)
всегда приводило к исключению COM.
После некоторых проб и ошибок я заметил, что .GetSharedDefaultFolder () всегда возвращал папку «Входящие» вместо календаря, несмотря на передачу в праветип папки ...
Вот соответствующий код (или то, что я считаю уместным по крайней мере ...).Заметил, что CalendarFolder.DefaultMessageClass всегда IPM.NOTE.При выполнении вызова GetSharedDefaultFolder () с моим собственным адресом электронной почты (в настоящее время зарегистрирован в пользователь outlook), DefaultMessageClass правильно IPM.Appointment.
Я могу получить доступ к общей папке выбранных пользователей с помощью графического интерфейса Outlook из «Открыть папку других пользователей»"- в раскрывающемся списке выберите тип папки календаря.
AddressEntry addrEntry =
oApp.Session.CurrentUser.AddressEntry;
if (addrEntry.Type == "EX")
{
ExchangeUser manager =
oApp.Session.CurrentUser.
AddressEntry.GetExchangeUser().GetExchangeUserManager();
if (manager != null)
{
Recipient recip =
oApp.Session.CreateRecipient(manager.Name);
if (recip.Resolve())
{
try {
CalendarFolder =
oApp.Session.GetSharedDefaultFolder(
recip, OlDefaultFolders.olFolderCalendar)
as Folder;
Console.WriteLine($"{manager.Name}'s: " + CalendarFolder.DefaultMessageClass);
}
catch (System.Exception ex )
{
Console.Write(ex);
}
}
}
}