我有一个用 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 的混合版本。