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

会話スレッドは、共通のトピックに対するメッセージへの返信のシーケンスです。会話内のメッセージは、階層的または時間的順序など、さまざまな方法で表示できます。メッセージスレッドを表示するために、電子メールアプリケーションはメッセージの返信を特定します。最も一般的な電子メールファイル形式はこの機能を提供しています。
会話スレッドは、読者が会話の全体的な構造を迅速に理解し、会話の特定のポイントを強調し、重要な情報を分析することを可能にします。 この記事では、Aspose.EmailのPST/MAPI機能を使用してメッセージを会話ごとに見つけてグループ化する方法に焦点を当てます。これを実現するために、特定のフォルダー内のメッセージを横断し、会話ごとにグループ化し、それぞれの会話を別のディスクディレクトリに保存するサンプルコードを実装します。

会話スレッドをサポートするために使用されるMAPIプロパティ

PST内のメッセージはMAPIプロパティのセットとして保存されているため、メッセージの返信を収集するために関連するMAPIプロパティを定義する必要があります。 これはMicrosoft Docsセクションに記載されています。 ご覧の通り、PidTagConversationIndexプロパティは、メッセージが特定の会話に関連付けられているかどうかを正確に判断することを可能にします。このプロパティはまた、会話スレッド内の相対的なメッセージの位置を示します。PidTagConversationIndexプロパティの詳細についてはこちらをご覧ください。ヘッダーはPidTagConversationIndexプロパティ値の最初の22バイトです。これは、メッセージが特定の会話スレッドに属しているかどうかを判断するためのデータ部分です。

Outlook PSTファイルを読むためのC# .NET API

PSTファイルを読むためにAspose.Email for .NETを使用します。これは、.NETを使用して電子メール処理アプリを実装するための素晴らしいライブラリです。このライブラリを使用すると、さまざまな電子メールファイル形式を簡単に扱うことができます。Aspose.Email for .NETはNuGetからインストールするか、DLLをダウンロードできます。

PM> Install-Package Aspose.Email

会話スレッドによるPST内のメッセージのグループ化

PST内のメッセージを会話ごとにグループ化するには、以下が必要です:

  • まず、ConversationThreadクラスを作成します。これは、会話内のメッセージをグループ化するためのコンテナです。
  • 次に、会話によるメッセージの検索とグループ化のためのメソッドを作成します。
  • 最後に、会話スレッドを別のディレクトリに保存するメソッドを作成します。

ConversationThreadクラスを作成する

以下のプロパティを持ちます。

  • Id: 会話インデックスヘッダーの文字列表現(22バイト)。
  • Messages: 会話スレッド内のメッセージIDのリスト。

会話によるメッセージの検索とグループ化のメソッドを作成する

ConversationThreadクラスを作成した後、以下を行うメソッドの作成に焦点を当てることができます:

  • フォルダー内のすべてのメッセージを通過します。パフォーマンス上の理由から、EnumerateMessagesEntryIdメソッドを使用してメッセージ識別子のみを読み取ります。
  • 各メッセージからExtractPropertyメソッドを使用してPidTagConversationIndexプロパティを抽出します。
  • PidTagConversationIndexプロパティ値の最初の22バイトが同じメッセージは同じ会話に属します。対応するConversationThreadクラスのインスタンスのMessagesプロパティで表されるリストにメッセージIDを追加します。
  • ConversationThreadインスタンスのリストを返します。

会話スレッドを別のディレクトリに保存するメソッドを作成する

最後に、会話をディレクトリに保存しましょう。

ConversationThreadインスタンスに対して、以下を行います:

  • スレッドトピックの名前で別のディレクトリを作成します。
  • ConversationThread.Messagesプロパティの識別子を列挙し、各識別子についてExtractMessageメソッドを使用してメッセージを抽出し、Saveメソッドを使用して作成したディレクトリにメッセージを保存します。

無料APIライセンスの取得

評価制限なしでAspose.Email for .NETを使用するには、無料の一時ライセンスを利用できます。

結論

この記事では、PST内で会話に関連するメッセージを検索するためにAspose.Emailを使用する方法を示しました。 PidTagConversationIndexのドキュメントをさらに探索することで、会話メッセージの階層的なソートを追加するなど、実装を複雑にすることもできます。Aspose.Emailについてはドキュメントを参照してください。質問がある場合は、フォーラムに投稿できます。

参照