从已签名的邮件中获取证书(Outlook 2007)

时间:2016-02-15 15:09:03

标签: .net email outlook certificate x509

我正在使用Outlook 2007的加载项。 加载项应从已恢复的已签名(未加密)邮件中获取证书,并检查颁发者是否存储在Outlook联系人列表中。如果是,则加载项应将Cert附加到特定联系人。 我现在被卡住的部分是从MailItem获取证书。 我了解到OOM并不支持我需要的功能。

有没有办法提取该证书(除了可能是赎回)?

1 个答案:

答案 0 :(得分:0)

证书存储在p7m附件中。但请注意,Outlook对象模型将所有已签名和加密的邮件表示为常规MailItem对象。它甚至从MailItem.MAPIOBJECT属性返回一个假的IMessage扩展MAPI对象,因此永远不能访问p7m附件。

您可以使用扩展MAPI(仅限C ++或Delphi)打开邮件并解压缩p7m附件。您可以在OutlookSpy中查看数据 - 选择已签名的邮件,单击IMessage按钮,然后单击IMAPISecureMessage | GetBaseMessage,转到GetAttachmentTable选项卡。

如果使用Redemption(任何语言)是一个选项,它会公开RDOEncryptedMessage对象

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Msg = Session.GetMessageFromId(Application.ActiveExplorer.Selection(1).EntryId)
if TypeName(Msg) = "RDOEncryptedMessage" Then
  MsgBox Msg.SignedByName
End If