我做了一些东西来为用户生成签名,但现在我也想将它设置为默认签名。这将自动添加到您正在撰写或回复的新电子邮件中。
我无法找到任何示例或参考来说明我如何做到这一点。有人可以指出我正确的方向吗?
我发现通过 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);
}
找到了一种使用注册表项执行此操作的方法。密钥位于 HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows 消息传递子系统\Profiles[OutlookProfilename]\9375CFF0413111d3B88A00104B2A6676
在那个密钥中,每个签名都会有多个文件夹 00000001 上升。如果您删除某人的 Windows 配置文件,则计数再次从 1 开始。
如果您在这里放置一个名为“新签名”或“回复转发签名”的 REG_Binary,则该值应该是十六进制格式的签名名称。假设签名名称是测试,它会变成
十六进制的 54 65 73 74。注册密钥会这样:
54006500730074000000000000000000000000
我希望我像这样清楚地表明自己:D 找到这个并不容易:D
每个帐户签名的名称存储在可通过IOlkAccountManager
MAPI 接口访问的帐户配置文件数据中。由于该接口是扩展 MAPI,因此只能使用 C++ 或 Delphi 访问它。
Outlook 对象模型不公开签名或访问帐户的任意属性。
您可以在OutlookSpy中看到数据- 单击 IOlkAccountManager,双击该帐户,新建和回复签名名称将分别在属性 0x0016001F 和 0x0017001F 中。
可以使用 IOlkAccount 接口上的扩展 MAPI(C++ 或 Delphi)设置这些属性。您还可以使用Redemption(任何语言)设置它们 - RDOAccount对象公开 NewMessageSignature 和 Reply 属性以及 Fields[](可用于设置任何属性)。