Открытие файлов OLM
Aspose.Email для .NET представляет файл хранилища Outlook for 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 instance с OlmStorage(TraversalExceptionsCallback callback) конструктора, затем загрузите файл с помощью Load вместо FromFile.
Обратный вызов получает исключения, возникшие во время загрузки и обхода, поэтому их можно журналировать или игнорировать. Метод Load method возвращает 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.