こんにちは、WinFormsアプリからOutlook2010に検索クエリを送信できるかどうか疑問に思っています。つまり、検索して見つけたように.PSTファイルを検索するのではなく、自分で検索ボックスに入力したかのように、結果のリストをOutlookに表示しようとしています。
可能であれば、任意のサンプルコードが役立ちます。さらに、すべてのメールアイテムで直接検索を実行することは可能ですか?通常、検索を実行すると、現在のフォルダが結合されます。ありがとう。
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(...) メソッドのパラメーターとして指定します。受信トレイ以外のフォルダも指定できます。
MSDN で可能な各値を確認してください。
Stefan Cruysbergsは、Outlook アプリケーション オブジェクトのラッパーとして機能するOutlookProvider コンポーネントを作成しました。LINQ を使用して、このプロバイダーにクエリを実行し、連絡先、メールなどのデータを取得できます。彼のコードをダウンロードして確認してください。始めるにはこれで十分です。