Чтение файлов OLM Microsoft Outlook в C# .NET

OLM — это формат файла, который Microsoft Outlook для Mac использует для хранения локальных данных. OLM содержит локальные данные, такие как электронные письма, вложения, заметки, данные календаря, контакты, задачи, историю и т. д. Файлы OLM используются Outlook для Mac. Outlook для Windows не может получить доступ к ним или открыть их. Версия Outlook для Windows поддерживает только формат файла PST для хранения данных. В этой статье мы рассмотрим как открыть и прочитать файлы формата OLM из приложений C#.

C# .NET API для чтения файлов OLM

Aspose.Email для .NET — это мощный API, который предоставляет множество функций для реализации приложений электронной почты. Кроме того, он позволяет читать файлы OLM и другие форматы хранения почты, такие как MBOX, PST/OST. Вы можете установить библиотеку через NuGet или скачать ее DLL.

PM> Install-Package Aspose.Email

Открытие файлов формата OLM

Aspose.Email API предоставляет два способа открытия файлов формата OLM:

Существует различие в поведении между этими методами. См. раздел ниже.

Открытие файла с помощью конструктора

Чтобы открыть файл, вы должны вызвать конструктор класса OlmStorage и передать полное имя файла или поток в качестве аргумента:

Открытие файла с использованием статического метода FromFile

Чтобы открыть файл, вы должны использовать статический метод FromFile и передать полное имя файла или поток в качестве аргумента:

Получение папок

После открытия файла с помощью конструктора, будет доступно свойство FolderHierarchy. Оно возвращает список каталогов, которые существуют в файле OLM. Каждый объект класса OlmFolder из списка имеет свойство SubFolders, которое возвращает список подпапок. Таким образом, у нас есть доступ ко всем каталогам в OLM.

Пример ниже отображает список всех папок в иерархическом порядке:

Если открыть файл с помощью метода FromFile, то по умолчанию свойство FolderHierarchy не будет инициализировано и вернет null. В этом случае необходимо явно вызвать метод GetFolders:

Также можно получить любую папку по имени. Для этого вы должны:

  • вызвать метод GetFolder

  • передать имя папки в качестве первого аргумента и значение, указывающее, следует ли игнорировать регистронезависимость при поиске папки, в качестве второго параметра.

Список электронных писем

Класс OlmFolder, который представляет папку, имеет следующие методы для получения списка электронных писем:

  • EnumerateMessages реализует итерацию по электронным письмам в папке. В этом случае каждая итерация возвращает объект OlmMessageInfo, который предоставляет краткую информацию о письме.

  • EnumerateMapiMessages также реализует итерацию по электронным письмам в папке, но в этом случае каждая итерация возвращает объект MapiMessage, который представляет само письмо со всеми свойствами.

Использование метода EnumerateMessages

Использование метода EnumerateMapiMessages

Другие полезные свойства

Также класс OlmFolder имеет свойства HasMessages и MessageCount, которые возвращают наличие сообщений в папке и их количество:

Извлечение электронных писем

Класс OlmStorage имеет метод ExtractMapiMessage, который позволяет извлекать электронные письма. Этот метод принимает объект OlmMessageInfo.

Заключение

В этой статье вы узнали, как читать файлы OLM в C#. Вы увидели способы получения списка папок и извлечения сообщений из файла OLM. Кроме того, вы можете узнать больше о Aspose.Email для .NET, воспользовавшись документацией. Также вы можете задать свои вопросы или запросы на нашем форуме.

См. также