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

标签 c# .net outlook vsto outlook-addin

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

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

  1. 我们正在使用 MailItem COM 对象
  2. 我们设置 MailItem.HTMLBody
  3. 电子邮件已转换为 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。

最佳答案

有两种方式:

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

关于C# VSTO 加载项 - 将纯文本电子邮件转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124865/

相关文章:

c# - LINQ 查找没有连接的记录

c# - LightSwitch - 使用 FindControl 获取 AutoCompleteBox,在转换时变为 null

c# - 在 .NET web.config 文件中管理测试/产品连接字符串的正确方法

.net - 为什么 LINQ 中的 'equals' 运算符会加入?

.net - 仅完全匹配的正则表达式

.net - 如何在 dotnet 上以编程方式截取屏幕截图并通过电子邮件发送

vb.net - 如何在 VB.NET 中使用 Outlook.MailItem 获取发件人电子邮件地址?

c# - WebDav: 如何设置 Exchange 2003 约会类别?

c# - 如何为 Windows Phone 8.1 创建多个辅助磁贴

c# - 单击一次打开下拉列表(在数据 GridView 中)项目