Відкриття файлів 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.