Beim Bearbeiten der HTMLBody-Eigenschaft eines Outlook-Elements mithilfe des Outlook-Objektmodells verloren gegangene Formatierung

Ursprüngliche KB-Nummer:   4020759

Problembeschreibung

Es wird davon ausgegangen, dass Sie ein neues MailItem-, AppointmentItem-oder MeetingItem -Objekt mithilfe des Outlook-Objektmodellserstellen. Anschließend legen Sie die HTMLBody -Eigenschaft des Elements auf eine zuvor erstellte wohlgeformte HTML-Quelle fest, die CSS-Formatvorlagen (Cascading Stylesheet) enthält. Nachdem Sie die Display -Methode und die Send -Methode zum Senden des Elements aufgerufen haben, werden die von den konfigurierten CSS-Formatvorlagen vorgegebenen Formatierungen möglicherweise ausgeblendet, oder die Absatzformatvorlagen werden möglicherweise durch die- MSONormal Klasse ersetzt.

Ursache

Microsoft Outlook verwendet Microsoft Word als Editor. Ein Verlust der Formatierung kann auftreten, wenn die HTML-Quelle vom Word-HTML-Modul überprüft wird, wenn das Element gesendet wird.

Problemumgehung

Es wird empfohlen, dass Sie das zugrunde liegende WordEditor-Objekt des Inspektors verwenden, um die HTML-und Rich-Text-Format (RTF) Textkörper von Outlook-Elementen zu bearbeiten, wenn Sie das Outlook-Objektmodell verwenden, anstatt die Eigenschaft zu bearbeiten HtmlBody . Beispiel:

Hinweis

Weitere Informationen finden Sie unter Word-Objektmodell .

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