8

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

我无法找到任何示例或参考来说明我如何做到这一点。有人可以指出我正确的方向吗?

4

3 回答 3

9

我发现通过 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);


    }
于 2014-04-18T09:34:15.513 回答
2

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

在那个密钥中,每个签名都会有多个文件夹 00000001 上升。如果您删除某人的 Windows 配置文件,则计数再次从 1 开始。

如果您在这里放置一个名为“新签名”或“回复转发签名”的 REG_Binary,则该值应该是十六进制格式的签名名称。假设签名名称是测试,它会变成
十六进制的 54 65 73 74。注册密钥会这样:
54006500730074000000000000000000000000

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

于 2012-06-08T16:17:26.717 回答
0

每个帐户签名的名称存储在可通过IOlkAccountManagerMAPI 接口访问的帐户配置文件数据中。由于该接口是扩展 MAPI,因此只能使用 C++ 或 Delphi 访问它。

Outlook 对象模型不公开签名或访问帐户的任意属性。

您可以在OutlookSpy中看到数据- 单击 IOlkAccountManager,双击该帐户,新建和回复签名名称将分别在属性 0x0016001F 和 0x0017001F 中。

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

于 2015-09-04T06:29:13.307 回答