如何检查附加到Outlook MailItem(电子邮件)的有效电子邮件(数字)签名是否存在?

时间:2014-11-13 19:34:48

标签: vba email outlook

有没有办法

  1. 使用VBA检索附加到MailItem的数字签名?
  2. 使用VBA验证其有效性?
  3. 在这方面,我几乎只限于VBA。我已经尝试检查Sender和MailItem对象,但我看不到有关Signature对象的任何信息。

1 个答案:

答案 0 :(得分:0)

Outlook始终将签名/加密邮件表示为常规IPM.Note MailItem对象。它甚至从MailItem.MAPIOBJECT属性返回一个假的IMessage MAPI接口。

您可以在OutlookSpy中看到此内容 - 选择已签名的邮件,单击OutlookSpy功能区上的IMessage按钮。 PR_MESSAGE_CLASS将是IPM.Note。选择PR_ENTRYID属性,右键单击,选择IMAPISession :: OpenEntry。您将使用PR_MESSAGE_CLASS = IPM.Note.SMIME.MultipartSigned返回真实消息。您可以看到包含数据的附件。

如果您想区分签名/加密邮件和常规邮件,那么您几乎只限于扩展MAPI(仅限C ++或Delphi)或Redemption(任何语言 - 它包装扩展MAPI)。赎回暴露RDOEncryptedMessage对象。您可以使用从OOM中的MailItem.EntryID属性检索的条目ID从RDOSession.GetMessageFromID中检索它。