OLM ファイルのオープン

Aspose.Email for .NET は Outlook for Mac のストレージ ファイルを OlmStorage クラス。この項では、パスまたはストリームから OLM ファイルを開く方法と、破損している可能性のあるファイルを安全にロードする方法を示します。

OLM ファイルを開く

OLM ファイルは 2 つの方法で開くことができます:

  • コンストラクターを使用する場合;
  • 静的メソッドを使用する場合 FromFile メソッド。

これら 2 つのアプローチ間には、フォルダー階層の初期化方法に影響を与える動作の違いがあります。参照 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 メッセージの読み取りと抽出.