Подключение к календарю Outlook из C # с помощью Interop - PullRequest
0 голосов
/ 09 февраля 2012

Хорошо. Я пытаюсь подключиться к календарю Outlook из C #, используя следующий код:

using Outlook = Microsoft.Office.Interop.Outlook;

Outlook.Application msOutlook = new Outlook.Application();
Outlook.NameSpace ns = msOutlook.GetNamespace("MAPI");
Outlook.MAPIFolder folder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);

foreach (Outlook.MAPIFolder subfolder in folder.Folders)
{
    MessageBox.Show(subfolder.Name);
}

Однако, несмотря на наличие двух календарей, фрагмент кода выше не видит ни одного!

Думаю, мне повезет больше с кодом ниже:

Outlook.MAPIFolder folder = ns.GetFolderFromID("CalendarName", Type.Missing);

Но это исключение:

Не удалось открыть предмет. Попробуйте еще раз.

Я предполагаю, что идентификатор календаря - это нечто иное, чем его имя.

Что я делаю не так?

Также я использую C # 4 с .Net 4 и Outlook 2010.

1 Ответ

3 голосов
/ 09 февраля 2012

Находятся ли оба календаря в пространстве имен MAPI? Что делать, если вы просматриваете пространства имен, чтобы увидеть, есть ли у других календарь:

Outlook.Application msOutlook = new Outlook.Application();
Outlook.NameSpace session = msOutlook.Session;
Outlook.Stores stores = session.Stores;
foreach (Outlook.Store store in stores)
{
    Outlook.MAPIFolder folder = store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);

    MessageBox.Show(folder.Name);
}
...