Outlook 如何获取非';是否有收件箱的子文件夹?

Outlook 如何获取非';是否有收件箱的子文件夹?,outlook,Outlook,有很多问题会问如何在Outlook中获取文件夹,但我看到的所有答案都假设该文件夹嵌套在收件箱文件夹下。甚至假设: private void SetCurrentFolder() { string folderName = "TestFolder"; //THIS STATEMENT ASSUMES WE'RE LOOKING IN THE INBOX Outlook.MAPIFolder inBox = (Outlook.MAPIFolder) this

有很多问题会问如何在Outlook中获取文件夹,但我看到的所有答案都假设该文件夹嵌套在收件箱文件夹下。甚至假设:

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");
    }
}
假设我在邮箱的根级别上有以下文件夹:

  • 收件箱
  • 草稿
  • MyCustomFolder

如何获取
MyCustomFolder
,它不是收件箱的子文件夹,作为
MAPIFolder
文件夹

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

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"];

谢谢这看起来会奏效。我仍然觉得奇怪的是,Microsoft没有提供更直接的方法来实现这一点。更直接的方法是使用Namespace.Folders集合,该集合表示配置文件中所有存储的顶级文件夹。然后,您可以深入到您要查找的文件夹。