我有一个用 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);

当同一用户手动创建新消息时,字体设置为 卡利布里 或用户设置为默认字体的任何字体。问题是自动电子邮件中的文本出现在 英语字体格式一种 我们不想要的字体。

如果我查看其中一封已发送电子邮件的源,我可以看到 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";
}

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

有帮助吗?

解决方案

由于它是一个HTML电子邮件,您可以轻松地将您想要到实际的HTML身体的任何造型。我怀疑是在创建从Outlook GUI的消息有什么展望正在做什么。

我真的不知道如何让用户设置。我通过Outlook API(这是一个奇怪的野兽)看了看,但什么也没有看见,这将提供访问默认消息属性。

其他提示

这太令人沮丧了。

当你用谷歌搜索这个问题时,有无数的答案告诉你简单地解决这个问题,这并没有帮助 风格 CSS 中的文本。是的,很好,如果您要生成完整的电子邮件并且可以设置/控制整个文本的样式。但在您的情况(和我们的情况)中,目的是使用一些初始文本启动电子邮件,然后最终用户添加自己的文本。这是他的附加文本,准确无误地以 Times New Roman 字体呈现。

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

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

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

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

我很感激这对你没有帮助 需要 以编程方式控制或改变字体。但对于那些只想要基本电子邮件字体的客户来说 不是 每当从代码生成电子邮件时,都会使用 Times New Roman,这可能会有所帮助。

据我的经验,创建一个电子邮件确实使用默认的电子邮件设置。

您正好设置newMail.HTMLBody的值,而不是在它插入你的HTML。 我敢打赌,如果你检查HTMLBody的内容,将在它的东西开始,像CSS代码

但是,任何时候你试图从电子邮件值的一个阅读,您的用户将获得安全弹出窗口说:“有一个程序正试图access..blah等等等等”

我就遇到了这个时候试图保持用户的签名,没有找到一个很好的方式得到它,而不会触发安全提示。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top