Outlook Interop,邮件格式

Gen*_*ror 8 c# email outlook interop stylesheet

我有一个用C#编写的应用程序,它使用Outlook Interop打开一个新的邮件消息,预先填写用户可以在手动发送之前编辑的详细信息.

var newMail = (Outlook.MailItem)outlookApplication.CreateItem(
    Outlook.OlItemType.olMailItem);
newMail.To = "example@exam.ple";
newMail.Subject = "Example";
newMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
newMail.HTMLBody = "<p>Dear Example,</p><p>Example example.</p>";
newMail.Display(false);
Run Code Online (Sandbox Code Playgroud)

当同一用户手动创建新消息时,字体将设置为Calibri或用户将其设置为默认字体.问题是自动电子邮件中的文本显示在我们不想要的Times New Roman字体中.

如果我查看其中一封已发送的电子邮件的来源,我可以看到Outlook已明确设置电子邮件来源中的字体:

// Automated
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
    margin:0cm;
    margin-bottom:.0001pt;
    font-size:12.0pt;
    font-family:"Times New Roman";
}

// Manual
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
    margin:0cm;
    margin-bottom:.0001pt;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
}
Run Code Online (Sandbox Code Playgroud)

为什么格式不同,如何让自动电子邮件使用用户默认设置?我正在使用互操作程序集的版本11,因为安装了Outlook 2003和2007的混合.

haw*_*bsl 6

这完全令人沮丧.

当你谷歌问题时,无数的答案告诉你只需在CSS中设置文本样式,这没有任何帮助.Yeeessss,很好,如果您正在生成完整的电子邮件并可以设置/控制整个文本.但在你的情况下(和我们的),目的是用一些初始文本启动电子邮件,最终用户添加他自己的文本.这是他在Times New Roman中不断呈现的附加文本.

我们找到的解决方案是从另一个方向解决问题.这就是将Outlook中的基本/底层默认值修复为我们选择的字体而不是Times New Roman.

这可以通过以下方式完成:

  1. 打开Word(是的,不是Outlook)
  2. 转到选项 - >高级 - > Web选项
  3. 更改"字体"选项卡中的默认字体

视频:http:
//www.youtube.com/watch?v = IC2RvfoMFz8

我很感激,如果您需要以编程方式控制或更改字体,这无济于事.但对于那些只是希望基本电子邮件字体不是 Times New Roman的客户而言,无论何时通过代码生成电子邮件,这都可能有所帮助.


Rob*_*vey 2

由于它是 HTML 电子邮件,因此您可以轻松地将所需的任何样式嵌入到实际的 HTML 正文中。我怀疑这就是当您从 Outlook GUI 创建邮件时 Outlook 所做的事情。

我实际上不知道如何获取用户设置。我查看了 Outlook API(它是一个奇怪的野兽),但没有看到任何可以提供对默认邮件属性的访问的内容。