使用Interop从C#连接到Outlook日历

时间:2012-02-09 17:50:48

标签: c# interop outlook

好的我正在尝试使用以下代码从C#连接到Outlook日历:

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);

但是这引发了以下异常:

  

无法打开该项目。再试一次。

我猜日历ID不是它的名字。

我做错了什么?

另外,我正在使用带有.Net 4和Outlook 2010的C#4。

1 个答案:

答案 0 :(得分:3)

这两个日历都在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);
}