Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Outlook互操作,邮件格式_C#_Email_Interop_Outlook_Stylesheet - Fatal编程技术网

C# Outlook互操作,邮件格式

C# Outlook互操作,邮件格式,c#,email,interop,outlook,stylesheet,C#,Email,Interop,Outlook,Stylesheet,我有一个用C#编写的应用程序,它使用outlookinterop打开一封新的邮件,其中预先填充了用户可以在手动发送之前编辑的详细信息 var newMail = (Outlook.MailItem)outlookApplication.CreateItem( Outlook.OlItemType.olMailItem); newMail.To = "example@exam.ple"; newMail.Subject = "Example"; newMail.BodyFormat = O

我有一个用C#编写的应用程序,它使用outlookinterop打开一封新的邮件,其中预先填充了用户可以在手动发送之前编辑的详细信息

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);

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

由于它是一封HTML电子邮件,您可以轻松地将任何样式嵌入到实际的HTML正文中。我猜想,当您从Outlook GUI创建消息时,Outlook就是这样做的


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

根据我的经验,创建电子邮件时确实会使用默认电子邮件设置

您正将newMail.HTMLBody设置为一个值,而不是将HTML插入其中。 我敢打赌,如果你检查了HTMLBody的内容,它会从其中的一些内容开始,比如css代码

但是,每当您尝试读取其中一个电子邮件值时,您的用户都会收到安全弹出窗口,显示“程序正在尝试访问..诸如此类”


我在试图维护用户的签名时遇到了这种情况,在没有触发安全提示的情况下,从来没有找到一种获取签名的好方法。

这完全令人沮丧

当你用谷歌搜索这个问题时,有无数的答案告诉你用CSS简单地设置文本的样式,这是没有帮助的。是的,很好,如果你正在生成完整的电子邮件,并且可以对整个文本进行样式/控制。但在您(和我们)的情况下,目的是启动带有一些初始文本的电子邮件,最终用户添加自己的文本。这是他的补充文本,在《新罗马时代》中得到了忠实的呈现

我们找到的解决办法是从另一个方向来处理这个问题。也就是说,将Outlook中的基本/基础默认设置修复为我们选择的字体,而不是Times New Roman

这可以通过以下方式实现:

  • 打开Word(是,不是Outlook)
  • 转到选项->高级->网络选项
  • 在“字体”选项卡中更改默认字体
  • 此处视频:


    如果您需要以编程方式控制或更改字体,我很感激这没有帮助。但是,对于那些只希望基本电子邮件字体为而不是的客户来说,只要电子邮件是由代码生成的,这可能会有所帮助。

    这并不是我想要的。。。但可能和我现在得到的一样好!在一般性错误的情况下,《泰晤士报新罗马报》从何而来?我看到了类似的行为,但我一生都找不到所选字体的来源。此外。即使我将正文格式指定为HTML,它也会切换为纯文本。如果我不提供任何消息内容,那么它将保留HTML格式设置。如果我应用正文,它将切换为纯文本。
    // 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";
    }