打开 OLM 文件

Aspose.Email for .NET 使用 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 消息.