Se pierde formato al editar la propiedad HtmlBody de un elemento de Outlook utilizando el modelo de objetos de Outlook

Se aplica a: Microsoft Office Outlook 2007Microsoft Outlook 2010Outlook 2013 Más

Síntoma


Suponga que crea un nuevo objeto MailItemAppointmentItemy MeetingItem mediante el Modelo de objetos de Outlook. A continuación, establezca la propiedad HtmlBody del elemento a algunos creado previamente el código fuente HTML con formato correcto que contiene la hoja de estilos en cascada (CSS). Después de llamar al método Display y el método Send para enviar el elemento, puede desaparecer el formato viene determinado por los estilos CSS configurados o los estilos de párrafo podrán sustituirse por la clase MSONormal.

Causa


Microsoft Outlook utiliza Microsoft Word como su editor. Puede producirse pérdida de formato cuando se valida el código HTML mediante el motor de HTML de Word cuando se envía el artículo.

Solución alternativa


Recomendamos que utilice el objeto WordEditor subyacente del inspector para editar los cuerpos HTML y formato de texto enriquecido (RTF) de elementos de Outlook cuando se utiliza el modelo de objetos de Outlook, en lugar de modificar la propiedad HtmlBody. Vea el ejemplo siguiente.

Nota: Para obtener más información, vea Modelo de objetos de 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();        }    }}