Freigeben über


Erstellen eines Nachrichtentexts

Gilt für: Outlook 2013 | Outlook 2016

Obwohl einige Nachrichten aus nichts mehr als einer Empfängerliste und einer Betreffzeile bestehen, besteht der Inhalt der meisten Nachrichten, insbesondere IPM. Notiznachrichten, enthält Text. Nachrichtentext kann einfach oder formatiert sein und wird in drei Eigenschaften gespeichert: PR_BODY (PidTagBody), PR_HTML (PidTagHtml) und PR_RTF_COMPRESSED (PidTagRtfCompressed).

Wenn Ihr Client nur textbasiert ist, legen Sie PR_BODY fest. Wenn Sie formatierten Text im RICH-Text-Format (RTF) unterstützen, legen Sie je nach verwendetem Nachrichtenspeicheranbieter entweder nur PR_RTF_COMPRESSED oder PR_RTF_COMPRESSED undPR_BODY fest. Wenn ein RTF-fähiger Client einen RTF-fähigen Nachrichtenspeicher verwendet, wird nur PR_RTF_COMPRESSED festgelegt. Wenn ein RTF-fähiger Client einen Nicht-RTF-fähigen Nachrichtenspeicher verwendet, legt er beide Eigenschaften fest. Wenn Ihr Client HTML unterstützt, legen Sie die eigenschaft PR_HTML fest.

Bestimmen, ob Ihr Nachrichtenspeicher das Rich-Text-Format unterstützt

  1. Rufen Sie die IMAPIProp::GetProps-Methode des Nachrichtenspeichers auf, um die eigenschaft PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask) abzurufen.

  2. Suchen Sie nach dem STORE_RTF_OK Bit. Wenn STORE_RTF_OK festgelegt ist, unterstützt der Nachrichtenspeicheranbieter RTF-Text. Wenn sie nicht festgelegt ist, unterstützt der Nachrichtenspeicheranbieter nur Nur-Text.

Bestimmen, ob Ihr Nachrichtenspeicher HTML unterstützt

  1. Rufen Sie die IMAPIProp::GetProps-Methode des Nachrichtenspeichers auf, um die eigenschaft PR_STORE_SUPPORT_MASK abzurufen.

  2. Suchen Sie nach dem STORE_HTML_OK Bit. Wenn STORE_HTML_OK festgelegt ist, unterstützt der Nachrichtenspeicheranbieter HTML-Text.

Festlegen PR_RTF_COMPRESSED

  1. Rufen Sie die IMAPIProp::OpenProperty-Methode der Nachricht auf, um die PR_RTF_COMPRESSED-Eigenschaft zu öffnen, indem Sie IID_IStream als Schnittstellenbezeichner angeben und das MAPI_CREATE-Flag festlegen.

  2. Rufen Sie die WrapCompressedRTFStream-Funktion auf, und übergeben Sie das flag STORE_UNCOMPRESSED_RTF, wenn das STORE_UNCOMPRESSED_RTF Bit in der PR_STORE_SUPPORT_MASK-Eigenschaft des Nachrichtenspeichers festgelegt ist.

  3. Geben Sie den ursprünglichen Stream frei, indem Sie die IUnknown::Release-Methode aufrufen.

  4. Rufen Sie entweder IStream::Write oder IStream::CopyTo auf, um den Nachrichtentext in den von WrapCompressedRTFStream zurückgegebenen Stream zu schreiben.

  5. Rufen Sie die Commit- und Release-Methoden für den Von der OpenProperty-Methode zurückgegebenen Stream auf.

Wenn der Nachrichtenspeicheranbieter RTF unterstützt, haben Sie an diesem Punkt alles getan, was erforderlich ist. Sie können sich darauf verlassen, dass der Nachrichtenspeicheranbieter die Synchronisierung des Nachrichteninhalts und der Formatierung verarbeitet und bei Bedarf die PR_BODY-Eigenschaft erstellt. RTF-fähige Nachrichtenspeicher rufen RTFSync auf, um die Synchronisierung zu verarbeiten. Wenn das RTF_SYNC_BODY_CHANGED-Flag auf TRUE festgelegt ist, berechnet der Anbieter die eigenschaft PR_BODY neu.

Wenn Ihr Nachrichtenspeicheranbieter RTF nicht unterstützt, müssen Sie auch Nicht-RTF-Nachrichteninhalte hinzufügen, indem Sie die eigenschaft PR_BODY festlegen.

Festlegen von PR_HTML

  1. Rufen Sie die IMAPIProp::OpenProperty-Methode auf, um die eigenschaft PR_HTML mit der IStream-Schnittstelle zu öffnen.

  2. Rufen Sie IStream::Write auf, um die Nachrichtentextdaten in den von OpenProperty zurückgegebenen Stream zu schreiben.

  3. Rufen Sie IStream::Commit und IUnknown::Release für den Stream auf, um die Änderungen zu committen und den Arbeitsspeicher freizugeben.

Festlegen von PR_BODY

  1. Rufen Sie die IMAPIProp::OpenProperty-Methode auf, um die eigenschaft PR_BODY mit der IStream-Schnittstelle zu öffnen.

  2. Rufen Sie IStream::Write auf, um die Nachrichtentextdaten in den von OpenProperty zurückgegebenen Stream zu schreiben.

  3. Rufen Sie die RTFSync-Funktion auf, um den Text mit der Formatierung zu synchronisieren. Da es sich um eine neue Nachricht handelt, legen Sie sowohl die flags RTF_SYNC_RTF_CHANGED als auch RTF_SYNC_BODY_CHANGED fest, um anzugeben, dass sich sowohl die RTF- als auch die Nur-Text-Version des Nachrichtentexts geändert haben. RTFSync legt mehrere verwandte Eigenschaften fest, die der Nachrichtenspeicheranbieter benötigt, z. B. PR_RTF_IN_SYNC (PidTagRtfInSync), und schreibt sie in die Nachricht.

  4. Rufen Sie IStream::Commit und IUnknown::Release für den Stream auf, um die Änderungen zu committen und den Arbeitsspeicher freizugeben.