Outlook フォルダーが公開されているかどうかを判断する方法が必要です。それを可能にするプロパティ Microsoft.Office.Interop.Outlook があると思いますが、見つかりません。
2 に答える
問題のフォルダーに関連付けられたインターフェイスを取得できる場合(申し訳ありませんが、純粋なC#でそれを行う方法がわかりません-償還IMsgStore
をお勧めします)、プロパティをクエリして、それがであるかどうかを確認できます。PR_MDB_PROVIDER
pbExchangeProviderPublicGuid
KGの回答に対するコメントに基づいて更新します。
プライマリメールボックス内にある連絡先を除外するStoreID
場合は、デフォルトの受信トレイフォルダーの連絡先と比較するか、他のストアのフォルダーを最初から列挙しないでください。
必要なのはExchangeWebサービス、具体的にはFindFolder操作です(MSDNの説明については、ここまたはここを参照してください)。
見た目からは、@ RedDeckWinsが言及しているように、フォルダが「パブリック」であるかどうかを識別する特定のプロパティはありません。
アップデート
これにマネージドC#を使用する必要が特にない場合は、Powershell Exchangeコマンドレットを使用できます(これをここで確認してください)。具体的には、このコマンドが役立つ場合があります。
Get-PublicFolder -Recurse | Format-List Name
Powershellは、それ自体で非常に簡単に使用できますが、コードを実行しているサーバーにPowershellがインストールされている場合は、C#から呼び出すこともできます(最近のほとんどのボックスでは、Powershellがインストールされているはずです)。
C#に制限されている場合は、次のStackOverflowの質問をご覧ください:交換用のパブリックフォルダーへの電子メールアドレスのリスト