1

背景:我正在开发一个 Outlook 插件,它将附件添加到传出的电子邮件中。所有版本的 Outlook 都需要支持。

使用数字签名对 MailItem 进行签名后,向该 mailItem 添加附件通常会失败,除非您保存该邮件项目。这会从 mailitem 中删除签名。对我来说,这在某种程度上是预期的行为。这里没有什么奇怪的。

问题是当用户打开数字签名(无论是通过 UI 还是作为 Outlook 默认行为)然后再次将其关闭时。MailItem 不再签名,但它仍然表现得好像是 - 我们无法向此电子邮件添加附件。

我找到了一个可以解释原因的新闻组帖子;通过 Outlook API 检索到的对象似乎不是实际对象。

http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.messaging/2006-02/msg00000.html

目前,我已经放弃尝试很好地解决这个问题。将 MailItem 保存到临时文件似乎可以解决此问题,但是出于性能原因,我们只想在 MailItem 从已签名转换为未签名时保存。另一种可接受的替代方法是检测是否默认启用了数字签名。虽然有一个与数字签名的默认设置相关的注册表项,但这只是一个建议,并不能准确反映电子邮件是否会默认签名。

有任何想法吗?

4

2 回答 2

1

您可以使用兑换 api 库从 C# 调用该方法。

您还尝试过从扩展的 mapi dll 创建 PInvoke 签名吗?

于 2010-08-04T22:45:51.757 回答
0

事实证明,您可以在 C++ 中使用 EMAPI 来调用 IMessagePtr->SaveChanges(),这似乎工作得很好。不幸的是,您无法在 C# 中访问它。

于 2010-07-28T17:55:14.940 回答