Панель инструментов C # Office / Outlook 2010 - электронные письма в формате HTML - HTMLBody работает медленно - PullRequest
0 голосов
/ 12 мая 2011

Я программирую панель инструментов Outlook, которая загружает некоторые шаблоны электронной почты с веб-сайта, а затем позволяет создавать HTML-письма из подготовленных HTML-файлов. Вот код, который я использую для создания электронной почты:

        MailItem letter = (MailItem)Globals.ThisAddIn.Application.CreateItem(OlItemType.olMailItem);
        letter.HTMLBody = @"<div style=""text-align:center""> <b><br/>Please wait for content to be loaded...</b></div>";            
        letter.Display(false);
        letter.BodyFormat = OlBodyFormat.olFormatHTML;
        letter.HTMLBody = buffer.ToString();

Это нормально в Outlook 2003/2007, но очень медленно в 2010 году. Я понял, что Outlook добавляет много дерьмового кода в электронную почту (стили MSO, переформатирует html и много другого дерьма), и это на самом деле очень медленно. Я думал о том, чтобы заставить outlook добавить код дерьма в сохраненные файлы HTML, я пробовал это:

            // Compile the file and add the MSO Crap
            MailItem letter = (MailItem)Globals.ThisAddIn.Application.CreateItem(OlItemType.olMailItem);
            letter.BodyFormat = OlBodyFormat.olFormatHTML;
            letter.HTMLBody = content;
            content = letter.HTMLBody;

Но переменная "content" по-прежнему содержит исходный форматированный HTML. Это правильное направление? Как я могу получить переформатированный HTML с кодом outlook?

1 Ответ

0 голосов
/ 12 мая 2011

Я отвечу на свой вопрос ...

public static string HtmlToCrap(String HtmlSource)
{
string HtmlFile = "";
System.IO.File.WriteAllText(HtmlFile, HtmlSource);


Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document oDoc = new Microsoft.Office.Interop.Word.Document();

oDoc = oWord.Documents.Add();
oWord.Visible = false;

oDoc = oWord.Documents.Open(HtmlFile);

oDoc.SaveAs(@"C:\WORDhtml.html", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML);

oDoc.Close(false);
oWord.Quit();

return ReadFile(@"C:\WORDhtml.html");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...