如何检测Outlook是否默认数字签名电子邮件?
问题描述:
背景: 我正在开发一个Outlook外挂程序,它将附件添加到外发电子邮件中。所有版本的Outlook都需要支持。如何检测Outlook是否默认数字签名电子邮件?
当使用数字签名对MailItem进行签名时,除非保存邮件项目,否则向该邮件项目添加附件通常会失败。这将从mailitem中删除签名。对我而言,这是有些预期的行为。这里没什么奇怪的。
问题出在用户打开数字签名时(无论是通过UI还是Outlook默认行为),然后再次将其关闭。 MailItem不再签名,但仍然表现得如同 - 我们无法将附件添加到此电子邮件中。
我发现了一个可能解释原因的新闻组帖子;看来通过outlook API检索的对象不是实际的对象。
目前,我已经放弃了试图很好地解决这个问题;将MailItem保存到临时文件似乎可以解决此问题,但出于性能方面的原因,我们只希望在MailItem从已签名转换为未签名时保存。另一个可接受的选择是检测数字签名是否默认启用。虽然有一个与数字签名的默认设置相关的注册表项,但这仅仅是一个建议,并不能准确反映电子邮件是否默认签名。
任何想法?
答
原来,您可以在C++中使用EMAPI来调用IMessagePtr-> SaveChanges(),这似乎很好地工作。不幸的是,你不能在C#中访问它。
从赎回电话实际上并没有工作,这是令人惊讶的。 PInvoke是一个好主意;但是我们已经有了一个C++包装器,所以不妨在这里叫它:) – MauriceL 2010-08-05 08:41:55