Панель инструментов C # Office / Outlook 2010 — Электронные письма в формате HTML — HTMLBody работает медленно

#c# #html #email #outlook

#c# #HTML #Адрес электронной почты #outlook

Вопрос:

Я программирую панель инструментов 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:

Я отвечу на свой собственный вопрос…

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