メッセージ プロパティの概要
適用対象: Outlook 2013 | Outlook 2016
MAPI では、メッセージ プロパティが次の 3 種類に分割されます。
メッセージ コンテンツのプロパティ。
メッセージ転送、またはエンベロープのプロパティ。
メッセージ受信者のプロパティ。
メッセージ コンテンツ プロパティは、メッセージのテキストを記述します。 すべてのメッセージ クラスには、独自のコンテンツ プロパティのセットがあります。 MAPI は、ノート メッセージとレポート メッセージのコンテンツ プロパティを定義します。実装に適切にプロパティを設定するには、これらのメッセージ クラスを処理するクライアントとメッセージ ストア プロバイダーが必要です。 PR_BODY (PidTagBody) と PR_RTF_COMPRESSED (PidTagRtfCompressed) は、ノート メッセージのコンテンツ プロパティの例です。 PR_BODY にはノートの書式設定されていない内容が含まれますが、 PR_RTF_COMPRESSED にはノートの書式設定されたコンテンツの圧縮バージョンが含まれます。 プロパティ識別子の範囲の詳細については、「 プロパティ識別子の範囲」を参照してください。
新しいメッセージ クラスの場合、クライアントは次の 2 つの方法のいずれかでコンテンツ固有のプロパティを定義できます。
カスタム メッセージ クラスのコンテンツ プロパティ範囲でプロパティ識別子を使用すると、0x6800から0x7BFF。
0xFFFE範囲の0x8000に含まれる識別子を持つ名前付きプロパティを使用します。
カスタム メッセージ クラス コンテンツ プロパティの識別子範囲は、カスタム メッセージ クラスを作成するすべてのクライアントで使用できます。 そのため、この範囲内の 1 つのプロパティ識別子を複数のメッセージ クラスに使用できます。 この範囲のプロパティのユーザーは、プロパティの動作に関する仮定を行うことはできません。
名前付きプロパティの場合、クライアントはプロパティ セットと、新しいプロパティごとに文字列または数値を指定する名前を作成します。 次に、クライアントは、名前付きプロパティ範囲内の識別子にプロパティを関連付けます。 名前付きプロパティのユーザーは、 IMAPIProp::GetIDsFromNames メソッドと IMAPIProp::GetNamesFromIDs メソッドを使用して、名前または識別子によってアクセスします。
エンベロープ プロパティは、ある受信者から別の受信者にメッセージを送信するために使用される情報を提供します。 メッセージ コンテンツ プロパティと同様に、クライアントまたはサービス プロバイダーは、MAPI で定義されているものを補完するために、独自のエンベロープ プロパティを定義できます。 クライアントとトランスポート プロバイダーは、MAPI が提供する定義に基づいて MAPI が定義するエンベロープ プロパティを設定します。 特殊な機能を実装するトランスポート プロバイダーは、独自のエンベロープ プロパティを定義して、それらの機能をクライアントに公開できます。 MAPI は、これらの特別なプロバイダー定義プロパティに使用できるプロパティ識別子の範囲を確保します。 トランスポート プロバイダーは通常、これらのプロパティを表示し、クライアントがプロパティを変更できるようにする特別なプロパティ ページを実装します。 PR_SUBJECT (PidTagSubject) と PR_MESSAGE_CLASS (PidTagMessageClass) は、エンベロープ プロパティの例です。 詳細については、「 プロパティ識別子の範囲」を参照してください。
受信者のプロパティは、送信されたメッセージの送信先を表します。 受信者には、メッセージング ユーザー、配布リスト、またはコンピューターを指定できます。 受信者のプロパティは MAPI によって定義され、サービス プロバイダーによって設定されます。 一部の受信者プロパティは、メッセージング ユーザーと配布リスト オブジェクトのアドレス帳プロバイダーによってサポートされています。その他の受信者プロパティは、クライアント、メッセージ ストア プロバイダー、またはトランスポート プロバイダーによってサポートされます。 たとえば、すべての受信者にはアドレスとアドレスの種類が必要です。これらは、受信者がいずれかのコンテナーに格納されるときにアドレス帳プロバイダーによって管理されるプロパティです。 また 、受信者 には、プライマリ、カーボン コピー、またはブラインド カーボン コピーの受信者として受信者を識別する型PR_RECIPIENT_TYPE (PidTagRecipientType) もあります。
多くのメッセージ プロパティは省略可能です。つまり、クライアントが使用可能であるとは思えないか、有効な値に設定することはできません。 一部のメッセージ プロパティは必須ですが、メッセージが特定の状態にある場合にのみ使用できます。 たとえば、新しく作成されたメッセージは、メッセージが保存されるまでエントリ識別子を持つ必要はありません。また、メッセージを送信する準備ができるまでメッセージ クラスを持つ必要はありません。 クライアントは常に IMAPIProp::GetProps および IMAPIProp::OpenProperty 呼び出しの結果をチェックし、要求されたプロパティが使用できない場合に備えて、既定値をバックアップとして準備する必要があります。
サービス プロバイダーが設定するほとんどのメッセージ プロパティは、クライアントに対して読み取り専用です。