Microsoft KB Archive/268440

= INFO: MAPI Is Not Suitable for HTML Messages =

Article ID: 268440

Article Last Modified on 2/12/2007

-

APPLIES TO


 * Microsoft Exchange Server 5.5 Standard Edition
 * Microsoft Collaboration Data Objects 1.0
 * Microsoft Collaboration Data Objects 1.1
 * Microsoft Collaboration Data Objects 1.2
 * Microsoft Collaboration Data Objects 1.21
 * Microsoft Collaboration Data Objects 1.2 for NT Server
 * Microsoft Messaging Application Programming Interface
 * Microsoft Collaboration Data Objects 2.0

-



This article was previously published under Q268440



SUMMARY
Extended Messaging Application Programming Interface (MAPI) should not be used to generate HTML-formatted messages. As an alternative, consider using the Microsoft Outlook Object Model, CDONTS, CDOSYS, CDOEX, or a third-party SMTP control.



MORE INFORMATION
MAPI 1.0 was written before HTML mail was developed and does not reliably support the creation of HTML-formatted messages. MAPI 1.0 is the version supported by all versions of Microsoft Exchange through version 5.5 (and all Service Packs). This includes the following subordinate technologies:
 * Simple MAPI
 * Extended MAPI
 * OLE Messaging
 * Active Messaging (Collaboration Data Objects (CDO) 1.1)
 * CDO versions 1.2 and 1.21
 * MAPI controls (Msmapi32.ocx)

If messages are needed in HTML format, such as for sending text formatted in other languages, alternative technologies that provide more reliable support for HTML messages are recommended:
 * CDONTS
 * CDO for Windows 2000 (CDOSYS)
 * CDO for Exchange 2000 (CDOEX)
 * Outlook Object Model of Microsoft Outlook 98 or later
 * SMTP-capable ActiveX controls obtained from third-party vendors

How Outlook Generates MAPI-based HTML Mail
The interfaces that Outlook uses to generate and work with HTML-formatted mail are not exposed externally except for what is exposed through the HTMLBody property. Outlook stores the HTML data as a specially encoded RTF stream in the MAPI property PR_RTF_COMPRESSED. There are no public interfaces for generating, reading, or manipulating this complex stream as HTML data. PR_BODY contains the plain text translation of the message body.

What About PR_BODY_HTML?
According to the documentation on PR_BODY_HTML, this property is only supported by a message store if the store returns STORE_HTML_OK in the PR_STORE_SUPPORT_MASK property. No Microsoft message store supports this flag. Some third-party store providers may choose to support this flag and property.

