C#VSTO加载项 - 将纯文本电子邮件转换为HTML

时间:2011-05-25 13:00:57

标签: c# .net outlook vsto outlook-addin

我们为Outlook 2010/2007编写了一个VSTO插件。

有一次,我们的插件必须从功能区控件将纯文本电子邮件转换为HTML。这会在Outlook中导致一些奇怪的行为:

  1. 我们正在使用MailItem COM对象
  2. 我们设置了MailItem.HTMLBody
  3. 电子邮件转换为HTML,但由于某种原因,该字体为Times New Roman at 10pt
  4. Outlook中的默认字体是Calibri 11pt,这使得我们的电子邮件转换对用户来说非常奇怪。当您使用Outlook中的现有按钮转换为HTML时,它可以正常工作,但在使用我们的插件按钮时则不行。

    所以我们尝试了以下内容:

    • 提前设置MailItem.BodyFormat
    • 将我们的电子邮件文本包裹起来:<span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'></span>(我们从查看新Outlook电子邮件的来源获得了这个想法)

    <span>标记包裹在电子邮件正文周围,只要将字体更改为Calibri,但字体大小保持在10pt ......

    有更好的方法吗?另一种解决方法?

    编辑,工作代码:

            if (_mailItem.BodyFormat != OlBodyFormat.olFormatHTML)
            {
                _mailItem.GetInspector.CommandBars.ExecuteMso("MessageFormatHtml");
            }
    

    _mailItem是一个Microsoft.Office.Interop.Outlook.MailItem。

1 个答案:

答案 0 :(得分:3)

您有两种方式:

  1. 通过Inspector.CommandBars.ExecuteMso("MessageFormatHtml")
  2. 以编程方式“点击”内置按钮
  3. 关闭检查器,转换邮件格式,保存电子邮件并重新打开。