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

发布于 2024-11-09 22:40:28 字数 969 浏览 3 评论 0原文

我们为 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
  • 将电子邮件文本包装为: ;(我们通过查看新 Outlook 电子邮件的源代码得到了这个想法)

标签包裹在电子邮件正文周围就可以更改字体到 Calibri,但字体大小保持在 10pt...

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

编辑,工作代码:

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

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

We have written a VSTO addin for Outlook 2010/2007.

At one point, our addin must convert plain text emails to HTML from a ribbon control. This causes some strange behavior in Outlook:

  1. We're using the MailItem COM object
  2. We set MailItem.HTMLBody
  3. Email is converted to HTML, but for some reason the font is Times New Roman at 10pt

The default font in Outlook is Calibri 11pt, which makes our email conversion look pretty strange to the user. It works as expected when you use the existing button in Outlook to convert to HTML, but not when using our addin's button.

So we tried the following:

  • Set MailItem.BodyFormat ahead of time
  • Wrapped our email text with: <span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'></span> (We got this idea from viewing the source of a new Outlook email)

Wrapping the <span> tag around the email body worked as far as changing the font to Calibri, but the font size stayed at 10pt...

Is there a better way to do this? Another workaround?

EDIT, working code:

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

_mailItem is a Microsoft.Office.Interop.Outlook.MailItem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

抠脚大汉 2024-11-16 22:40:28

您有两种方法:

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

You have two ways:

  1. "Click" the built-in button programmatically via Inspector.CommandBars.ExecuteMso("MessageFormatHtml")
  2. Close the inspector, convert the message format, save the email and re-open it.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文