Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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#_Outlook - Fatal编程技术网

C# 设置默认签名outlook

C# 设置默认签名outlook,c#,outlook,C#,Outlook,我做了一些事情来为用户生成签名,但现在我还想将其设置为默认签名。这将自动添加到您正在撰写或回复的新电子邮件中 我找不到任何例子或参考资料来说明我是如何做到这一点的。 有人能给我指一下正确的方向吗。找到了一种使用注册表项的方法。 钥匙位于 HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows消息传递子系统\Profiles[OutlookProfilename]\9375CFF041311D3B88A00104B2A6676 在该密钥中

我做了一些事情来为用户生成签名,但现在我还想将其设置为默认签名。这将自动添加到您正在撰写或回复的新电子邮件中

我找不到任何例子或参考资料来说明我是如何做到这一点的。
有人能给我指一下正确的方向吗。

找到了一种使用注册表项的方法。 钥匙位于 HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows消息传递子系统\Profiles[OutlookProfilename]\9375CFF041311D3B88A00104B2A6676

在该密钥中,对于每个签名,将有一个多文件夹00000001向上。 如果删除某人的windows配置文件,计数再次从1开始

在这里,如果您放置一个名为 “新签名”或“回复转发签名” 该值应为十六进制格式的签名名称。 假设签名名为Test,它将变成
54 65 73 74十六进制。注册表项希望它是这样的:
54006500730074000000000000000000000000000000000000000


我希望我这样清楚地表明自己:D找到这个并不容易:D

我发现通过VSTO Word对象设置签名更容易:

 static void SetDefault(string signature)
    {
        Word.Application oWord = new Word.Application();
        Word.EmailOptions oOptions;
        oOptions = oWord.Application.EmailOptions;
        oOptions.EmailSignature.NewMessageSignature = signature;
        oOptions.EmailSignature.ReplyMessageSignature = signature;
        //Release Word
        if (oOptions != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(oOptions);
        if (oWord != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord);


    }

每个帐户签名的名称存储在可通过
IOlkAccountManager
MAPI界面访问的帐户配置文件数据中。由于该接口扩展了MAPI,只能使用C++或Delphi访问。 Outlook对象模型不公开签名或访问帐户上的任意属性

您可以在单击IolkaAccountManager中看到数据,双击帐户,新建和回复签名名称将分别位于属性0x0016001F和0x0017001F中


可以使用IOlkAccount接口上的扩展MAPI(C++或Delphi)设置这些属性。您还可以使用(任何语言)设置它们-对象公开NewMessageSignature和Reply属性以及字段[](可用于设置任何属性)。

尝试此@PresleyDias感谢回复,但是,我正在尝试在outlook中设置默认签名是什么。这意味着您要从当前签名更改outlook的签名吗?您也可以使用VBA Word对象来执行此操作,方法与上面的简单方法相同,比混乱注册表要好得多。谢谢。难道“Outlook.Application-oaapplication=ThisAddIn.app;”没有用吗?我对它的工作原理有点迷茫……是的,你是对的(这是Outlook加载项中某个方法的一个片段),你不需要app对象。我编辑了这篇文章,这很有效。需要将签名文件(如sig.htm)保存在
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+“\\Microsoft\\Signatures”
文件夹中。另外,只将不带扩展名(“.htm”)的文件名传递给函数
SetDefault(“sig”)请记住,这通常不起作用-9375CFF041311D3B88A00104B2A6676是配置文件部分GUID,对于不同的配置文件和不同的机器将有所不同。