メッセージ テキストの作成

適用対象: Outlook 2013 | Outlook 2016

一部のメッセージは受信者リストと件名行で構成されていますが、ほとんどのメッセージの内容、特に IPM です。メッセージをメモし、テキストを含みます。 メッセージ テキストはプレーンまたは書式設定でき、PR_BODY (PidTagBody)、PR_HTML (PidTagHtml)、PR_RTF_COMPRESSED (PidTagRtfCompressed) の 3 つのプロパティに格納されます。

クライアントがプレーン テキスト ベースの場合は、 PR_BODYを設定します。 リッチ テキスト形式 (RTF) で書式設定されたテキストをサポートする場合は、 使用している メッセージ ストア プロバイダーに応じて、 PR_RTF_COMPRESSED のみ、または PR_RTF_COMPRESSEDとPR_BODYの両方を設定します。 RTF 対応クライアントが RTF 対応メッセージ ストアを使用している場合は、 PR_RTF_COMPRESSED のみを設定します。 RTF 対応クライアントが RTF 対応以外のメッセージ ストアを使用している場合は、両方のプロパティを設定します。 クライアントで HTML がサポートされている場合は、 PR_HTML プロパティを設定します。

メッセージ ストアでリッチ テキスト形式がサポートされているかどうかを判断する

  1. メッセージ ストアの IMAPIProp::GetProps メソッドを呼び出して 、PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask) プロパティを取得します。

  2. STORE_RTF_OK ビットを確認します。 STORE_RTF_OKが設定されている場合、メッセージ ストア プロバイダーは RTF テキストをサポートします。 設定されていない場合、メッセージ ストア プロバイダーはプレーン テキストのみをサポートします。

メッセージ ストアで HTML がサポートされているかどうかを判断する

  1. メッセージ ストアの IMAPIProp::GetProps メソッドを呼び出して 、PR_STORE_SUPPORT_MASK プロパティを取得します。

  2. STORE_HTML_OK ビットを確認します。 STORE_HTML_OKが設定されている場合、メッセージ ストア プロバイダーは HTML テキストをサポートします。

PR_RTF_COMPRESSEDを設定する

  1. メッセージの IMAPIProp::OpenProperty メソッドを呼び出して 、PR_RTF_COMPRESSED プロパティを開き、インターフェイス識別子としてIID_IStreamを指定し、MAPI_CREATE フラグを設定します。

  2. WrapCompressedRTFStream 関数を呼び出し、STORE_UNCOMPRESSED_RTF ビットがメッセージ ストアの PR_STORE_SUPPORT_MASK プロパティに設定されている場合は、STORE_UNCOMPRESSED_RTF フラグを渡します。

  3. IUnknown::Release メソッドを呼び出して、元のストリームを解放します。

  4. IStream::Write または IStream::CopyTo を呼び出して、WrapCompressedRTFStream から返されるストリームにメッセージ テキストを書き込みます。

  5. OpenProperty メソッドから返されるストリームで Commit メソッドと Release メソッドを呼び出します。

この時点で、メッセージ ストア プロバイダーが RTF をサポートしている場合は、必要な操作をすべて完了しています。 メッセージ ストア プロバイダーに依存して、メッセージの内容と書式設定の同期を処理し、必要に応じて PR_BODY プロパティを作成できます。 RTF 対応メッセージ ストアは、同期を処理するために RTFSync を呼び出します。 RTF_SYNC_BODY_CHANGED フラグが TRUE に設定されている場合、プロバイダーは PR_BODY プロパティを再計算します。

メッセージ ストア プロバイダーが RTF をサポートしていない場合は、 PR_BODY プロパティを設定して、RTF 以外のメッセージ コンテンツも追加する必要があります。

PR_HTMLを設定する

  1. IMAPIProp::OpenProperty メソッドを呼び出して、IStream インターフェイスを使用して PR_HTML プロパティを開きます。

  2. IStream::Write を呼び出して、OpenProperty から返されたストリームにメッセージ テキスト データを書き込みます。

  3. ストリームで IStream::CommitIUnknown::Release を呼び出して、変更をコミットし、そのメモリを解放します。

PR_BODYを設定する

  1. IMAPIProp::OpenProperty メソッドを呼び出して、IStream インターフェイスを使用して PR_BODY プロパティを開きます。

  2. IStream::Write を呼び出して、OpenProperty から返されたストリームにメッセージ テキスト データを書き込みます。

  3. RTFSync 関数を呼び出して、テキストを書式設定と同期します。 これは新しいメッセージであるため、メッセージ テキストの RTF とプレーン テキストの両方のバージョンが変更されたことを示すために、RTF_SYNC_RTF_CHANGEDフラグとRTF_SYNC_BODY_CHANGED フラグの両方を設定します。 RTFSync では、 PR_RTF_IN_SYNC (PidTagRtfInSync) など、メッセージ ストア プロバイダーに必要な関連プロパティがいくつか設定され、メッセージに書き込まれます。

  4. ストリームで IStream::CommitIUnknown::Release を呼び出して、変更をコミットし、そのメモリを解放します。