我正在开发一个应用程序,该应用程序应该从 Outlook 获取电子邮件链接并将其存储在数据库中。
我一直在查看 Microsoft.Office.Interop.Outlook API,但找不到可用于此目的的东西。
有什么想法吗?
请您参考如下方法:
您可以将电子邮件保存为 .msg 文件,然后将其作为字节数组保存到数据库中吗?
否则,有一些方法可以通过编程方式访问邮箱或 outlook .pst 文件,然后您必须编写一个界面,让他们选择要保存的电子邮件,然后将电子邮件分成几部分(主题、收件人、发件人等)保存。 ) 分别存入数据库。
要访问 Exchange 服务器 (Exchange 2007+) 上的邮箱,您可以使用 Exchange Web Services Managed API 1.0 来实现。 EWS API你可以从here下载它
它使访问和检索电子邮件等变得非常简单,因为在 Exchange 2007 之前,这是一件痛苦的事情,涉及解析大量 XML 或使用 CDOEXM。
这是一个如何使用它的例子:
您首先需要创建一个 Exchange 服务。添加对 EWS 的引用并在下面添加 using 行。
using Microsoft.Exchange.WebServices.Data;
...
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.AutodiscoverUrl( "First.Last@MyCompany.com" );
服务启动并运行后,您就可以使用它来查询邮箱:
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();
}
}
}
