Création d’un texte de message
S’applique à : Outlook 2013 | Outlook 2016
Bien que certains messages ne soient constitués que d’une liste de destinataires et d’une ligne d’objet, le contenu de la plupart des messages, en particulier IPM. Notez les messages, y compris le texte. Le texte du message peut être brut ou mis en forme et est stocké dans trois propriétés : PR_BODY (PidTagBody), PR_HTML (PidTagHtml) et PR_RTF_COMPRESSED (PidTagRtfCompressed).
Si votre client est basé sur du texte brut, définissez PR_BODY. Si vous prenez en charge le texte mis en forme au format RTF (Rich Text Format), définissez PR_RTF_COMPRESSED uniquement ou les deux PR_RTF_COMPRESSED et PR_BODY, en fonction du fournisseur de magasin de messages que vous utilisez. Lorsqu’un client prenant en charge RTF utilise une banque de messages compatible RTF, il définit PR_RTF_COMPRESSED uniquement. Lorsqu’un client prenant en charge RTF utilise une banque de messages non compatible AVEC RTF, il définit les deux propriétés. Si votre client prend en charge html, définissez la propriété PR_HTML .
Déterminer si votre magasin de messages prend en charge le format texte enrichi
Appelez la méthode IMAPIProp ::GetProps de la banque de messages pour récupérer la propriété PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask).
Recherchez le bit STORE_RTF_OK. Si STORE_RTF_OK est défini, le fournisseur de magasin de messages prend en charge le texte RTF. S’il n’est pas défini, le fournisseur de magasin de messages prend uniquement en charge le texte brut.
Déterminer si votre magasin de messages prend en charge le code HTML
Appelez la méthode IMAPIProp ::GetProps de la banque de messages pour récupérer la propriété PR_STORE_SUPPORT_MASK .
Recherchez le bit STORE_HTML_OK. Si STORE_HTML_OK est défini, le fournisseur de magasin de messages prend en charge le texte HTML.
Définir PR_RTF_COMPRESSED
Appelez la méthode IMAPIProp ::OpenProperty du message pour ouvrir la propriété PR_RTF_COMPRESSED , en spécifiant IID_IStream comme identificateur d’interface et en définissant l’indicateur MAPI_CREATE.
Appelez la fonction WrapCompressedRTFStream en transmettant l’indicateur STORE_UNCOMPRESSED_RTF si le bit STORE_UNCOMPRESSED_RTF est défini dans la propriété PR_STORE_SUPPORT_MASK de la banque de messages.
Libérez le flux d’origine en appelant sa méthode IUnknown ::Release .
Appelez IStream ::Write ou IStream ::CopyTo pour écrire le texte du message dans le flux retourné par WrapCompressedRTFStream.
Appelez les méthodes Commit et Release sur le flux retourné par la méthode OpenProperty .
À ce stade, si le fournisseur de magasin de messages prend en charge RTF, vous avez fait tout ce qui est nécessaire. Vous pouvez dépendre du fournisseur de magasin de messages pour gérer la synchronisation du contenu et de la mise en forme des messages, et créer la propriété PR_BODY si nécessaire. Les magasins de messages prenant en charge RTF appellent RTFSync pour gérer la synchronisation. Si l’indicateur RTF_SYNC_BODY_CHANGED est défini sur TRUE, le fournisseur calcule à nouveau la propriété PR_BODY .
Si votre fournisseur de magasin de messages ne prend pas en charge RTF, vous devez également ajouter du contenu de message non-RTF en définissant la propriété PR_BODY .
Définir PR_HTML
Appelez la méthode IMAPIProp ::OpenProperty pour ouvrir la propriété PR_HTML avec l’interface IStream .
Appelez IStream ::Write pour écrire les données de texte du message dans le flux retourné par OpenProperty.
Appelez IStream ::Commit et IUnknown ::Release sur le flux pour valider les modifications et libérer sa mémoire.
Définir PR_BODY
Appelez la méthode IMAPIProp ::OpenProperty pour ouvrir la propriété PR_BODY avec l’interface IStream .
Appelez IStream ::Write pour écrire les données de texte du message dans le flux retourné par OpenProperty.
Appelez la fonction RTFSync pour synchroniser le texte avec la mise en forme. Comme il s’agit d’un nouveau message, définissez les indicateurs RTF_SYNC_RTF_CHANGED et RTF_SYNC_BODY_CHANGED pour indiquer que la version RTF et la version en texte brut du texte du message ont changé. RTFSync définit plusieurs propriétés associées requises par le fournisseur de magasin de messages, telles que PR_RTF_IN_SYNC (PidTagRtfInSync), et les écrit dans le message.
Appelez IStream ::Commit et IUnknown ::Release sur le flux pour valider les modifications et libérer sa mémoire.