【问题标题】:How can I get a MAPI Folder that isn't a subfolder of Inbox?如何获取不是 Inbox 子文件夹的 MAPI 文件夹?
【发布时间】:2017-03-01 05:40:20
【问题描述】:

有很多问题询问如何在 Outlook 中获取文件夹,但我看到的所有答案都假定此文件夹嵌套在收件箱文件夹下。甚至Microsoft's documentation 也假设:

private void SetCurrentFolder()
{
    string folderName = "TestFolder";

    //THIS STATEMENT ASSUMES WE'RE LOOKING IN THE INBOX
    Outlook.MAPIFolder inBox = (Outlook.MAPIFolder)
        this.Application.ActiveExplorer().Session.GetDefaultFolder
        (Outlook.OlDefaultFolders.olFolderInbox);

    try
    {
        this.Application.ActiveExplorer().CurrentFolder = inBox.
            Folders[folderName];
        this.Application.ActiveExplorer().CurrentFolder.Display();
    }
    catch
    {
        MessageBox.Show("There is no folder named " + folderName +
            ".", "Find Folder Name");
    }
}

假设我的邮箱根目录有以下文件夹:

  • Inbox
  • Drafts
  • MyCustomFolder

我如何获得MyCustomFolder,它不是收件箱的子文件夹,作为MAPIFolderFolder

【问题讨论】:

    标签: outlook


    【解决方案1】:

    假设文件夹是收件箱文件夹的对等,你可以得到收件箱,然后上一级,然后检索有问题的文件夹:

    Outlook.MAPIFolder inBox = (Outlook.MAPIFolder)
            this.Application.ActiveExplorer().Session.GetDefaultFolder
            (Outlook.OlDefaultFolders.olFolderInbox);
    Outlook.MAPIFolder rootFolder = (Outlook.MAPIFolder)inBox.Parent;
    Outlook.MAPIFolder myFolder = rootFolder.Folders["MyCustomFolder"];
    

    【讨论】:

    • 谢谢!这看起来会奏效。在我看来,微软没有提供更直接的方法来做到这一点,这对我来说仍然很奇怪。
    • 更直接的方法是使用 Namespace.Folders 集合,该集合代表配置文件中所有商店的顶级文件夹。然后,您可以向下钻取到您之后的文件夹。
    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    相关资源
    最近更新 更多