Abrindo Arquivos OLM

Aspose.Email para .NET representa um arquivo de armazenamento Outlook for Mac com o OlmStorage classe. Este artigo mostra como abrir um arquivo OLM a partir de um caminho ou de um stream, e como carregar com segurança um arquivo que pode estar corrompido.

Abrir um Arquivo OLM

Um arquivo OLM pode ser aberto de duas maneiras:

  • usando um construtor;
  • usando o estático FromFile método.

Há uma diferença de comportamento entre essas duas abordagens que afeta como a hierarquia de pastas é inicializada. Consulte Navegando nas Pastas OLM para detalhes.

Usando o Construtor

Para abrir um arquivo, chame o construtor da OlmStorage classe e passe o nome completo do arquivo como argumento. Porque OlmStorage implementa IDisposable, envolva‑o em um using declaração para que o manipulador de arquivo subjacente seja liberado quando terminar.

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

Usando o Método Estático FromFile

Para abrir um arquivo, use o estático FromFile método e passar o nome completo do arquivo como argumento:

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

Abrir um Arquivo OLM a partir de um Stream

Quando os dados OLM não vêm de um caminho local — por exemplo, são recebidos de um banco de dados, de um recurso de rede ou de um armazenamento na nuvem — você pode abri‑los diretamente de um Stream. Use o OlmStorage(Stream) construtor ou o estático FromStream método.

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

O método estático funciona da mesma forma:

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

Abrir um Arquivo OLM Corrompido

Se um arquivo pode estar parcialmente corrompido, ainda é possível extrair o máximo de dados possível sem parar no primeiro erro. Para isso, crie o OlmStorage instância com o OlmStorage(TraversalExceptionsCallback callback) construtor, então carregue o arquivo com o Load método em vez do FromFile.

O callback recebe as exceções geradas durante o carregamento e a travessia, permitindo que você registre ou ignore‑as. O Load método retorna true se o arquivo foi carregado com sucesso e a travessia for possível, e false se o arquivo estiver muito corrompido para percorrer.

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 um exemplo completo de extração de itens de um arquivo corrompido, veja Lendo e Extraindo Mensagens OLM.