Вы можете сохранить электронное письмо в виде файла .msg, а затем сохранить его в базе данных в виде массива байтов?
В противном случае существуют способы программного доступа к почтовому ящику или файлу outlook .pst, вам нужно будет написать интерфейс, который позволит им выбрать электронное письмо для сохранения, а затем сохранить электронное письмо по частям (тема, из, из и т. Д.). ) отдельно в базу данных.
Чтобы получить доступ к почтовому ящику на сервере Exchange (Exchange 2007+), вы можете сделать это с помощью управляемого веб-служб Exchange API 1.0. EWS API и вы можете скачать его с здесь
Это действительно упрощает доступ и получение электронной почты и т. Д., Как и до Exchange 2007, это было болезненно и требовало анализа большого количества XML или использования CDOEXM.
Вот пример того, как его использовать:
Сначала необходимо создать службу Exchange. Добавьте ссылку на EWS и добавьте строку использования ниже.
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();
}
}
}