8

こんにちは、WinFormsアプリからOutlook2010に検索クエリを送信できるかどうか疑問に思っています。つまり、検索して見つけたように.PSTファイルを検索するのではなく、自分で検索ボックスに入力したかのように、結果のリストをOutlookに表示しようとしています。

可能であれば、任意のサンプルコードが役立ちます。さらに、すべてのメールアイテムで直接検索を実行することは可能ですか?通常、検索を実行すると、現在のフォルダが結合されます。ありがとう。

4

1 に答える 1

11

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

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

ここに画像の説明を入力

その後、名前空間 "Microsoft.Office.Interop.Outlook" を using 句に追加することを忘れないでください。

これで、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 列挙体

Stefan Cruysbergsは、Outlook アプリケーション オブジェクトのラッパーとして機能するOutlookProvider コンポーネントを作成しました。LINQ を使用して、このプロバイダーにクエリを実行し、連絡先、メールなどのデータを取得できます。彼のコードをダウンロードして確認してください。始めるにはこれで十分です。

于 2012-06-22T18:29:19.320 に答える