2012-06-22 95 views
6

您好,我想知道是否可以從我的WinForms應用程序向Outlook 2010發送搜索查詢。也就是說,不搜索.PST文件,因爲我一直在四處搜索,發現,我試圖在Outlook中顯示結果列表,就好像我自己在搜索框中鍵入一樣。在Outlook中執行搜索查詢

如果可能的話,任何示例代碼都會有幫助。另外,是否有可能直接在所有郵件項目中執行搜索,而通常在您執行搜索時會梳理當前文件夾。謝謝。

回答

8

如果您想要訪問Outlook數據(例如郵件),您必須將COM引用添加到Microsoft Outlook X.X對象庫。

對於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