2012-06-22 13 views
6

こんにちは私のWinFormsアプリケーションからOutlook 2010に検索クエリを送信することが可能かどうかは疑問です。つまり、私が検索していたときに.PSTファイルを検索せず、検索ボックスに自分が入力したかのように、結果リストをOutlookに表示しようとしています。Outlookで検索クエリを実行

可能であれば、任意のコード例が参考になります。さらに、すべてのメールアイテムで検索を直接実行することは可能ですか?通常、検索を実行すると、現在のフォルダが曖昧になります。ありがとう。

答えて

8

Outlookデータ(メールなど)にアクセスするには、Microsoft Outlook X.XオブジェクトライブラリにCOM参照を追加する必要があります。

Outlookの場合、COM interopを使用できます。 [参照の追加]ダイアログを開き、[.NET]タブを選択し、Microsoft.Office.Interop.Outlookアセンブリへの参照を追加します。

enter image description here

は、その後、あなたの使用して句に名前空間「Microsoft.Office.Interop.Outlook」を追加することを忘れないでください。

今、あなたは、Outlookアプリケーションオブジェクトのインスタンスを作成することができます。

Microsoft.Office.Interop.Outlook.Application outlook; 
outlook = new Microsoft.Office.Interop.Outlook.Application(); 

のは、あなたの受信トレイにクエリを実行してみましょう:

MAPIFolder folder = 
    outlook.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderInbox); 
    IEnumerable<MailItem> mail = 
     folder.Items.OfType<MailItem>().Where(m => m.Subject == "Test").Select(m => m); 

あなたがのためのパラメータとして検索したいフォルダを指定GetDefaultFolder(...)メソッド。受信トレイ以外のフォルダを指定することもできます。

  • olFolderSentMail
  • olFolderOutbox
  • olFolderJunk
  • ...

は、MSDN上の各可能な値をチェックしてください:

OlDefaultFolders Enumeration

ステファンCruysbergsを作成しましたOutlookProvider componentは、Outlookアプリケーションオブジェクトのラッパーとして機能します。 LINQを使用してこのプロバイダに問い合わせ、連絡先、メールなどのデータを取得することができます。ちょうどdownload彼のコードをチェックアウトしてください。これは、あなたを始めさせるのに十分なはずです。

+1

これは私が望んでいたものではありません。私はOutlookのインスタンスを作成することに慣れています。これは、アプリケーションにクエリの結果を返すように見えます。代わりに、単にOutlookを開いて、私のアプリケーションから検索クエリを提供し、開いているインスタンス(または開いていない場合はOutlookを起動する)に、提供されたクエリの検索結果を表示したいと思います。 – ikathegreat

関連する問題