GetSharedDefaultFolder () всегда возвращает входящие независимо от предоставленного FolderType - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь получить общие календари из 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);
                    }
                }
            }
        }

1 Ответ

0 голосов
/ 19 октября 2018

Решено.

Конечно, я не читал страницу с описанием метода достаточно близко ..... https://docs.microsoft.com/en-us/office/vba/api/outlook.namespace.getshareddefaultfolder

"Этот метод используется в сценарии делегированиягде один пользователь делегировал доступ другому пользователю для одной или нескольких папок по умолчанию (например, для общей папки календаря). "

Я не был делегатом.

...