Відкриття файлів OLM

Aspose.Email for .NET представляє файл сховища Outlook для Mac за допомогою OlmStorage клас. У цій статті показано, як відкрити OLM‑файл за шляхом чи потоковим ресурсом і як безпечно завантажити файл, який може бути пошкоджений.

Відкрити OLM‑файл

OLM‑файл можна відкрити двома способами:

  • використовуючи конструктор;
  • використовуючи статичний FromFile метод.

Між цими двома підходами існує різниця в поведінці, що впливає на ініціалізацію ієрархії папок. Дивіться Навігація по папках OLM для деталей.

Використання конструктора

Щоб відкрити файл, викличте конструктор OlmStorage клас і передайте повне ім’я файлу як аргумент. Оскільки OlmStorage реалізує IDisposable, обгорніть його в using вираз, щоб дескриптор файлу був звільнений після завершення роботи.

var fileName = "MyStorage.olm";
using (var olm = new OlmStorage(fileName))
{
    // work with the storage
}

Використання статичного методу FromFile

Щоб відкрити файл, використайте статичний FromFile методу і передати повне ім’я файлу як аргумент:

var fileName = "MyStorage.olm";
using (var olm = OlmStorage.FromFile(fileName))
{
    // work with the storage
}

Відкрити OLM‑файл із потоку

Коли дані OLM не надходять з локального шляху — наприклад, отримані з бази даних, мережевого ресурсу або хмарного сховища — їх можна відкрити безпосередньо з Stream. Використайте OlmStorage(Stream) конструктор або статичний FromStream метод.

using (var stream = File.OpenRead("MyStorage.olm"))
using (var olm = new OlmStorage(stream))
{
    // work with the storage
}

Статичний метод працює так само:

using (var stream = File.OpenRead("MyStorage.olm"))
using (var olm = OlmStorage.FromStream(stream))
{
    // work with the storage
}

Відкрити пошкоджений OLM‑файл

Якщо файл може бути частково пошкоджений, все одно можна витягти якомога більше даних без зупинки на першій помилці. Для цього створіть OlmStorage екземпляр з OlmStorage(TraversalExceptionsCallback callback) конструктора, потім завантажте файл за допомогою Load метод замість FromFile.

Зворотний виклик отримує винятки, що виникли під час завантаження і обходу, тому їх можна журналювати або ігнорувати. Load метод повертає true якщо файл завантажено успішно і обхід можливий, і false якщо файл занадто пошкоджений для обходу.

using (var olm = new OlmStorage((exception, id) =>
{
    // Exception handling code.
    Console.WriteLine($"Failed to process item '{id}': {exception.Message}");
}))
{
    if (olm.Load(fileName))
    {
        // The file was loaded and can be traversed.
        var folderHierarchy = olm.GetFolders();
    }
    else
    {
        Console.WriteLine("The OLM file is corrupted and cannot be traversed.");
    }
}

Повний приклад витягування елементів з пошкодженого файлу можна знайти у Читання та витягування повідомлень OLM.