
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については、ドキュメントを使用してさらに学ぶことができます。質問やリクエストがある場合は、フォーラムで共有できます。