2010-07-06 96 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。

相关问题