C# .NETでMS Outlook OLMファイルを読む

OLMは、Microsoft Outlook for Macがローカルデータを保存するために使用するファイル形式です。OLMには、メール、添付ファイル、メモ、カレンダーデータ、連絡先、タスク、履歴などのローカルデータが含まれています。OLMファイルはOutlook for Macによって使用されます。Outlook for Windowsはそれにアクセスしたり、開いたりすることができません。Outlook for Windowsのバージョンは、データを保存するためにPSTファイル形式のみをサポートしています。この記事では、C#アプリケーションからOLM形式のファイルを開いて読む方法を考察します。

C# .NET APIを使用してOLMファイルを読む

Aspose.Email for .NETは、メールアプリケーションを実装するためのさまざまな機能を提供する強力なAPIです。また、OLMファイルやMBOX、PST/OSTなどの他のメールストレージ形式を読み取ることもできます。ライブラリはNuGetからインストールするか、DLLをダウンロードできます。

PM> Install-Package Aspose.Email

OLM形式のファイルを開く

Aspose.Email APIは、OLM形式のファイルを開くための2つの方法を提供します:

これらのメソッドの挙動には違いがあります。以下のセクションを参照してください。

コンストラクタによるファイルの開き方

ファイルを開くには、OlmStorageクラスのコンストラクタを呼び出し、フルファイル名またはストリームを引数として渡す必要があります:

静的メソッドFromFileを使用したファイルの開き方

ファイルを開くには、静的メソッドFromFileを使用し、フルファイル名またはストリームを引数として渡す必要があります:

フォルダーの取得

コンストラクタを使用してファイルを開いた後、FolderHierarchyプロパティにアクセスできます。これは、OLMファイル内に存在するディレクトリのリストを返します。リスト内のOlmFolderクラスの各オブジェクトには、サブフォルダーのリストを返すSubFoldersプロパティがあります。これにより、OLM内のすべてのディレクトリにアクセスできます。

以下の例は、階層順にすべてのフォルダーのリストを表示します:

FromFileメソッドを使用してファイルを開く場合、デフォルトではFolderHierarchyプロパティは初期化されず、nullを返します。この場合、明示的にGetFoldersメソッドを呼び出す必要があります:

また、名前で任意のフォルダーを取得することも可能です。これを行うには、次の手順を実行します:

  • GetFolderメソッドを呼び出す

  • フォルダー名を最初の引数として渡し、検索時に大文字と小文字の区別を無視するかどうかを示す値を2番目のパラメータとして渡します。

メールのリスト

フォルダーを表すOlmFolderクラスには、メールのリストを取得するための以下のメソッドがあります:

  • EnumerateMessagesは、フォルダー内のメールの反復処理を実装します。この場合、各反復はOlmMessageInfoオブジェクトを返し、メールに関する簡単な情報を提供します。

  • EnumerateMapiMessagesも、フォルダー内のメールの反復処理を実装しますが、この場合、各反復はメール自体を表すMapiMessageオブジェクトを返します。

EnumerateMessagesメソッドを使用

EnumerateMapiMessagesメソッドを使用

その他の便利なプロパティ

また、OlmFolderクラスには、フォルダー内のメッセージの存在とその数を返すHasMessagesおよびMessageCountプロパティがあります:

メールの抽出

OlmStorageクラスには、メールを抽出するためのExtractMapiMessageメソッドがあります。このメソッドは、OlmMessageInfoオブジェクトを受け取ります。

結論

この記事では、C#でOLMファイルを読む方法を学びました。フォルダーのリストを取得し、OLMファイルからメッセージを抽出する方法を見てきました。また、Aspose.Email for .NETについては、ドキュメントを使用してさらに学ぶことができます。質問やリクエストがある場合は、フォーラムで共有できます。

関連項目