我有一个用C#编写的应用程序,它使用Outlook打开一个新的邮件,其中预先填充了用户在手动发送之前可以编辑的详细信息。
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的混合版本。
发布于 2009-07-01 01:55:02
因为它是HTML电子邮件,所以您可以很容易地将任何样式嵌入到实际的HTML主体中。我怀疑Outlook在从Outlook创建消息时所做的事情。
实际上,我不知道如何获得用户设置。我查看了Outlook (它是一个奇怪的东西),但是没有看到任何可以提供对默认消息属性的访问的东西。
发布于 2014-01-30 15:57:31
这完全令人沮丧。
当你在谷歌上搜索这个问题时,有无数的答案告诉你在CSS中简单地使用文本的样式,这是没有帮助的。是的,好的,如果你正在生成完整的电子邮件,并且可以样式/控制整个文本。但在你(和我们的)的情况下,我们的意图是启动带有一些初始文本的电子邮件,最终用户添加自己的文本。这是他在“新罗马时代”中不屈不挠地呈现的额外文本。
我们找到的解决办法是从另一个方向处理这个问题。也就是说,将Outlook中的基本/基础默认设置为我们选择的字体,而不是Times。
这可以通过以下方式做到:
中的默认字体
视频在这里:
http://www.youtube.com/watch?v=IC2RvfoMFz8
如果您需要以编程方式控制或更改字体,我很感激这一点。但是对于那些只想让基本的电子邮件字体成为而不是的客户来说,只要从代码中生成电子邮件,这可能会有所帮助。
发布于 2011-06-29 13:45:29
我的经验是,创建电子邮件确实使用默认的电子邮件设置。
您实际上是将newMail.HTMLBody设置为一个值,而不是将您的HTML插入其中。我敢打赌,如果您检查了HTMLBody的内容,它将从其中的一些内容开始,比如css代码。
但是,每当您尝试从其中一个电子邮件值中读取时,您的用户就会看到一个安全弹出窗口,上面写着“一个程序正在尝试access..blah之类的东西”。
当我试图维护用户的签名时,我遇到了这样的情况,在没有触发安全提示的情况下,我始终没有找到一种获得签名的好方法。
https://stackoverflow.com/questions/1066870
复制相似问题