我们已经为 Outlook 2010/2007 编写了一个 VSTO 插件。
有一次,我们的插件必须将纯文本电子邮件从功能区控件转换为 HTML。这会导致 Outlook 出现一些奇怪的行为:
- 我们正在使用 MailItem COM 对象
- 我们设置 MailItem.HTMLBody
- 电子邮件已转换为 HTML,但由于某种原因字体为 Times New Roman,10pt
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。
最佳答案
有两种方式:
- 通过
Inspector.CommandBars.ExecuteMso("MessageFormatHtml")
以编程方式“单击”内置按钮 - 关闭检查器,转换消息格式,保存邮件并重新打开。
关于C# VSTO 加载项 - 将纯文本电子邮件转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124865/