【问题标题】:Outlook Interop: how to iterate all the calendars?Outlook Interop:如何迭代所有日历?
【发布时间】:2023-03-12 03:43:02
【问题描述】:

我想从所有日历中获取所有事件,如何遍历所有日历文件夹,然后遍历每个日历的所有事件?

【问题讨论】:

    标签: c# outlook interop vsto


    【解决方案1】:

    如果我不得不猜测,虽然我自己只是进入 Outlook,但我建议如下:

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

    然后是类似的东西

    foreach (outlook.MAPIFolder subFolder in folder.Folders)
    {
        // do something with subFolder
    }
    

    您可能会创建一些递归的东西来耗尽MAPIFolder.Folders 属性的所有可能性。

    编辑 最后,尝试在调试器中单步执行您已获得默认文件夹的调试器,看看您还剩下什么。我的猜测是这将包含您需要的信息。

    【讨论】:

    • 我将 [code]Console.WriteLine(subFolder.Name);[/code] 放在 foreach 中,并获得了输出 TWICE 的附加日历的名称......奇怪。它没有输出默认日历,是默认的subs子节点吗?
    • 我希望我知道。我仍在尝试了解 Outlook 如何管理所有内容的层次结构。我找到的最接近答案的是msdn.microsoft.com/en-us/library/ms268893%28VS.80%29.aspx,但即便如此,我发现试错法比 MSDN 更成功(所以还有什么新东西)。我能建议的最好的事情是坚持,但如果你确实找到了答案,请发布它。我很好奇您采用什么方法来实现目标,这可能会帮助我们遇到这种情况的其他人尝试学习 Outlook 的设计模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2014-09-13
    • 2015-10-02
    • 1970-01-01
    • 2022-08-05
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多