Mise en forme perdue lors de la modification de la propriété HtmlBody d’un élément Outlook à l’aide du modèle objet Outlook

Numéro de la base de connaissances d’origine : 4020759

Symptôme

Supposons que vous créez un objet MailItem, AppointmentItem ou MeetingItem à l’aide du modèle objet Outlook. Vous définissez ensuite la propriété HtmlBody de l’élément sur une source HTML bien formée précédemment qui contient des styles CSS (Cascading Style Sheet). Après avoir appelé la méthode Display et la méthode Send pour envoyer l’élément, la mise en forme dictée par les styles CSS configurés peut disparaître ou les styles de paragraphe peuvent être remplacés par la MSONormal classe .

Cause

Microsoft Outlook utilise Microsoft Word comme éditeur. Une perte de mise en forme peut se produire lorsque la source HTML est validée par le moteur HTML Word lors de l’envoi de l’élément.

Solution de contournement

Nous vous recommandons d’utiliser l’objet WordEditor sous-jacent de l’inspecteur pour modifier les corps HTML et RTF (Rich Text Format) des éléments Outlook lorsque vous utilisez le modèle objet Outlook, au lieu de modifier la HtmlBody propriété. Voir l’exemple ci-dessous.

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();
        }
    }
}