使用 Outlook 对象模型编辑 Outlook 项目的 HtmlBody 属性时丢失的格式

原始 KB 编号:   4020759

症状

假定您通过使用 Outlook 对象模型创建新的 MailItem 、AppointmentItemMeetingItem 对象。 然后,将项目的 HtmlBody 属性设置为以前创建的一些格式良好的 HTML 源,其中包含级联样式表 (CSS) 样式。 调用 Display 方法和 Send 方法发送项目后,配置的 CSS 样式所指示的格式可能会消失,或者段落样式可能会替换为 MSONormal 类。

原因

Microsoft Outlook 使用 Microsoft Word 作为编辑器。 发送项目时,Word HTML 引擎验证 HTML 源时,可能会丢失格式。

解决方法

在使用 Outlook 对象模型时,我们建议您使用检查器的基础 WordEditor 对象来编辑 Outlook 项目的 HTML 和 RTF (RTF) 正文,而不是编辑 HtmlBody 属性。 请参阅以下示例。

备注

有关详细信息 ,请参阅 Word 对象模型。

using Outlook = Microsoft.Office.Interop.Outlook;
using Word = Microsoft.Office.Interop.Word;
namespace CreateAndEditMailItemUsingWord
{
    class Program
    {
        static void Main(string[] args)
        {
            Outlook.MailItem mailItem = (new Outlook.Application()).CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
            Word.Document wordDocument = mailItem.GetInspector.WordEditor as Word.Document;
            // Insert the text at the very beginning of the document
            // You can control fonts and formatting using the ParagraphFormat propety of the Word.Range object
            Word.Range wordRange = wordDocument.Range(0, 0);
            wordRange.Text = "Please insert your text here";
            mailItem.Display();
        }
    }
}