2010-07-06 122 views
1

我正在開發一個應用程序,該應用程序應該從Outlook鏈接到電子郵件並將其存儲在數據庫中。獲取Outlook中的電子郵件鏈接/路徑?

我一直在看Microsoft.Office.Interop.Outlook API,但我找不到可以用於此的東西。

有什麼想法?

回答

2

您可以將電子郵件另存爲.msg文件,然後將其作爲字節數組保存到數據庫中?

否則有方法可以通過編程方式訪問郵箱或Outlook .pst文件,然後您必須編寫一個界面,讓他們選擇要保存的電子郵件,然後將電子郵件保存在部分(subject,to,from等) )分別存入數據庫。

要訪問Exchange服務器(Exchange 2007+)上的郵箱,可以使用Exchange Web服務託管API 1.0執行此操作。 EWS API你可以從here

這使得它非常簡單的訪問和檢索電子郵件等預Exchange 2007中,這是一個痛苦和參與分析大量的XML或使用CDOEXM下載。

繼承人如何使用它的一個例子:

您首先需要創建一個Exchange服務。添加對EWS的引用並添加下面的使用行。

using Microsoft.Exchange.WebServices.Data; 
... 
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
service.AutodiscoverUrl("[email protected]"); 

一旦服務啓動並運行,那麼你可以用它來查詢郵箱:

FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, 
     new ItemView()); 

這將返回收件箱中的所有電子郵件。然後,您可以使用其屬性查看電子郵件的詳細信息。即item.Subject;

但是,如果電子郵件在.pst文件中,您將需要使用Outlook API,或者我建議您使用PST.NET(儘管您必須擁有許可證),因爲它使它變得更容易。

繼承人使用PST.NET的例子:

using System; 
using Independentsoft.Pst; 

namespace Sample 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      PstFile file = new PstFile("c:\\testfolder\\Outlook.pst"); 

      using (file) 
      { 
       Folder inbox = file.MailboxRoot.GetFolder("Inbox"); 

       if (inbox != null) 
       { 
        ItemCollection items = inbox.GetItems(); 

        for (int m = 0; m < items.Count; m++) 
        { 
         if (items[m] is Message) 
         { 
          Message message = (Message)items[m]; 

          Console.WriteLine("Id: " + message.Id); 
          Console.WriteLine("Subject: " + message.Subject); 
          Console.WriteLine("DisplayTo: " + message.DisplayTo); 
          Console.WriteLine("DisplayCc: " + message.DisplayCc); 
          Console.WriteLine("SenderName: " + message.SenderName); 
          Console.WriteLine("SenderEmailAddress: " + message.SenderEmailAddress); 
          Console.WriteLine("----------------------------------------------------------------"); 
         } 
        } 
       } 
      } 

      Console.WriteLine("Press ENTER to exit."); 
      Console.Read(); 
     } 
    } 
} 
+0

我喜歡一些代碼樣本! – Zolomon 2010-07-06 13:19:20

+0

沒問題,你在用什麼版本的Exchange? – w69rdy 2010-07-06 13:25:05

+0

我們正在使用2007年我相信。 – Zolomon 2010-07-06 13:29:17

2

有沒有這樣的事情作爲鏈接到Outlook中的電子郵件。

我想你想以文本格式存儲快捷方式,以後可以在Outlook中查找/打開電子郵件。如果您計劃使用Outlook Interop API,則可以使用表示電子郵件的MailItem對象的EntryID。這是該項目的唯一ID,但如果項目移動到文件夾結構中的其他位置,則可以更改該ID。

相關問題