Просмотрщик файлов MSG Outlook

Эта статья посвящена разбору и просмотру файлов MSG Microsoft Outlook. Если вам нужно управлять файлами MSG в вашем проекте или приложении, вам нужен API для разбора формата Outlook MSG. Или, если у вас нет Microsoft Outlook, установленного на вашей системе, вы можете создать собственный просмотрщик для получения содержимого файла MSG.

Примеры кода в этой статье показывают, как разобрать файл MSG Outlook в приложении C# с использованием библиотеки Aspose.Email. Aspose.Email — это .NET библиотека, доступная в виде DLL. Используйте эту библиотеку для просмотра файлов MSG в Windows, вебе, консольных или любых других приложениях на основе .NET. Пробную версию Aspose.Email можно легко скачать. Исходный код для проекта ниже включен в образцы, предоставленные с установщиком.

Демо просмотрщика MSG Outlook

Мы создали простое демо-приложение, которое можно использовать для разбора и просмотра файлов MSG. Пользовательский интерфейс можно увидеть ниже:

todo:image_alt_text

Левая панель показывает диски и папки на системе, как это делает проводник Windows. Вы можете просматривать папки, чтобы отобразить или отфильтровать файлы MSG. Только файлы MSG появляются в верхнем списке контроллера отображения в соответствующей папке в древовидном представлении. Как видно из скриншота выше, поля Тема, От, Кому и Копия отображаются в верхнем списке. Если вы щелкните на любом MSG в списке, соответствующее сообщение откроется, и детали можно будет увидеть в интерфейсе ниже контроллера списка. Мы использовали метки для отображения информации о теме, кому, копии и от.

В нижней панели мы использовали вкладки для показа других деталей сообщения, таких как текстовое тело, RTF тело, заголовок сообщения, вложения и свойства MAPI. Если вы щелкните на вкладку Вложения, она показывает список вложений в файле MSG (если они есть). Вы также можете сохранить вложения на свою систему, выбрав вложение и щелкнув кнопку Сохранить. Откроется диалоговое окно сохранения файла. Перейдите в нужную папку и сохраните файл там. Следующий скриншот показывает вид вкладки Вложения.

todo:image_alt_text

Парсинг и просмотр содержимого файла MSG программным образом

В этом разделе мы представим код, который мы использовали в демо, чтобы показать содержимое файла MSG.

Загрузка файла MSG

Библиотека Aspose.Email предоставляет класс MapiMessage для загрузки и разбора файлов MSG. Вы можете загрузить файл MSG с помощью одной строки кода, вызвав статический метод FromFile() и передав путь к файлу MSG. Следующий фрагмент кода показывает, как загрузить файл MSG.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
string dataDir = RunExamples.GetDataDir_KnowledgeBase();
MapiMessage msg = MapiMessage.FromFile(dataDir + "Message.msg");

Получение информации От, Кому, Копия и Тема из файла MSG

Класс MapiMessage предоставляет свойства и коллекции для получения информации о теме, от, к кому и копии. Следующий пример кода показывает, как получить эти свойства. Следующий фрагмент кода показывает, как получить От, Кому, Копия и Тема из файла MSG.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
string dataDir = RunExamples.GetDataDir_KnowledgeBase();
// Load mail message
MailMessage msg = MailMessage.Load(dataDir + "Message.eml", new EmlLoadOptions());
// Subject
if (msg.Subject != null)
Console.WriteLine(msg.Subject);
else
Console.WriteLine("no subject");
// From
if (msg.From != null)
Console.WriteLine(msg.From);
else
Console.WriteLine("No sender");
// To
if (msg.To != null)
Console.WriteLine(msg.To);
else
Console.WriteLine("No one in To");
// Cc
if (msg.CC != null)
Console.WriteLine(msg.CC);
else
Console.WriteLine("No one in cc");

Получение текстовых и RTF тел

Мы можем получить текстовые и RTF тела сообщения, используя свойства класса MapiMessage. Следующий фрагмент кода показывает, как получить текстовые и RTF тела.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
string dataDir = RunExamples.GetDataDir_Outlook();
// Load mail message
MapiMessage msg = MapiMessage.FromMailMessage(dataDir + "Message.eml");
MapiMessageItemBase itemBase = new MapiMessage();
// Text body
if (itemBase.Body != null)
Console.WriteLine(msg.Body);
else
Console.WriteLine("There's no text body.");
// RTF body
if (itemBase.BodyRtf != null)
Console.WriteLine(msg.BodyRtf);
else
Console.WriteLine("There's no RTF body.");

Получение вложений из файла MSG и сохранение на диск

Класс MapiMessage предоставляет коллекцию Attachments для получения всех вложений в файле сообщения (MSG). Свойство MapiMessage.Attachments возвращает объект типа MapiAttachmentCollection. Вы можете использовать цикл for-each, чтобы перебрать коллекцию вложений и перечислить вложения. Класс Attachment содержит метод Save() для сохранения отдельного вложения на диск. Следующий фрагмент кода показывает, как получить список вложений и сохранить их.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Iterate through the Attachments collection
foreach (MapiAttachment att in msg.Attachments)
{
try
{
// Show the name of the attachment on screen and Save to local drive/folder
Console.WriteLine(att.LongFileName);
att.Save(att.LongFileName);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

Получение свойств MAPI файла MSG

Вы можете получить свойства MAPI из файла MSG, используя коллекцию свойств класса MapiMessage. Пример кода ниже показывает, как получить все свойства MAPI в файле сообщения.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MapiProperty mapi = msg.Properties[MapiPropertyTag.PR_SUBJECT_W];
if (mapi.Name.Trim().Length > 0)
{
// Display the MAPI property name and value
Console.WriteLine(mapi.Name);
Console.WriteLine(mapi.ToString());
}