2017-02-28 16 views
1

Outlookでフォルダを取得する方法を尋ねる多くの質問がありますが、私が見たすべての回答は、このフォルダが受信トレイフォルダの下に入れ子になっていると仮定しています。でもMicrosoft's documentationはこれを前提としていますInboxのサブフォルダではないMAPIフォルダを取得するにはどうすればよいですか?

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

受信トレイのサブフォルダではないMyCustomFolderMAPIFolderまたはFolderとして入手するにはどうすればよいですか?フォルダを仮定

答えて

2

は、受信トレイフォルダのピアである、あなたが受信トレイを取得することができ、その後、その後、問題のフォルダを検索し、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"]; 
+0

ありがとう!これはうまくいくように見えます。それでも、Microsoftが提供するこれを行うためのより簡単な方法はないということは、私にとっては奇妙なことです。 – arbitrarystringofletters

+1

より簡単な方法は、プロファイル内のすべてのストアの最上位レベルのフォルダを表すNamespace.Foldersコレクションを使用することです。その後、あなたが行っているフォルダにドリルダウンすることができます。 –

関連する問題