Apertura de archivos OLM

Aspose.Email para .NET representa un archivo de almacenamiento de Outlook para Mac con el OlmStorage clase. Este artículo muestra cómo abrir un archivo OLM desde una ruta o un stream, y cómo cargar de forma segura un archivo que pueda estar dañado.

Abrir un Archivo OLM

Un archivo OLM puede abrirse de dos maneras:

  • usando un constructor;
  • usando el estático FromFile método.

Existe una diferencia de comportamiento entre estos dos enfoques que afecta cómo se inicializa la jerarquía de carpetas. Vea Navegando carpetas OLM para más detalles.

Usando el Constructor

Para abrir un archivo, llame al constructor de la OlmStorage clase y pase el nombre completo del archivo como argumento. Debido a que OlmStorage implementa IDisposable, envuélvalo en un using sentencia para que el manejador subyacente del archivo se libere cuando termine.

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

Usando el Método Estático FromFile

Para abrir un archivo, use el estático FromFile método y pasar el nombre completo del archivo como argumento:

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

Abrir un Archivo OLM desde un Stream

Cuando los datos OLM no provienen de una ruta local —por ejemplo, se reciben de una base de datos, un recurso de red o almacenamiento en la nube— puede abrirlos directamente desde un Stream. Use el OlmStorage(Stream) constructor o el estático FromStream método.

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

El método estático funciona de la misma manera:

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

Abrir un Archivo OLM Corrupto

Si un archivo puede estar parcialmente dañado, aún puede extraer la mayor cantidad de datos posible sin detenerse en el primer error. Para ello, cree el OlmStorage instancia con el OlmStorage(TraversalExceptionsCallback callback) constructor, luego cargue el archivo con el Load método en lugar del FromFile.

La devolución de llamada recibe las excepciones generadas durante la carga y el recorrido, por lo que puede registrarlas o ignorarlas. El Load método devuelve true si el archivo se cargó correctamente y es posible el recorrido, y false si el archivo está demasiado dañado para recorrerlo.

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.");
    }
}

Para un ejemplo completo de extracción de elementos de un archivo dañado, vea Lectura y extracción de mensajes OLM.