c# - Outlook Interop,邮件格式

标签 c# email interop outlook 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);

当同一用户手动创建新消息时,字体设置为 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";
}

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

最佳答案

这完全令人沮丧。

当您用 Google 搜索问题时,有无数的答案告诉您只需在 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 的客户来说,这可能会有所帮助。

关于c# - Outlook Interop,邮件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1066870/

相关文章:

php - 在 PHP 中通过电子邮件验证用户

c# - 如何禁止因在 .NET 项目中使用 COM 引用而产生的编译器警告

c# - 将 System.Drawing.Bitmap 转换为 stdole.StdPicture

c# - 调整大小时 WPF 窗口闪烁

java - 我无法在 Android 中使用 JavaMail API 使用 Gmail 身份验证发送电子邮件,未检测到错误

c# - UnityEngine.Component 不包含定义...C#

perl - sendmail 如何从任何域发送电子邮件?

interop - 使用 Direct2d Gdi Interop 渲染目标的 GDI 对象泄漏

c# - 以编程方式替换段落中的格式化文本(链接、内容)

c# - 下载功能在 asp.net 的更新面板中不起作用