我想知道是否可以使用VB.Net检查电子邮件是否经过数字签名,以及谁是证书的颁发者。
使用扩展的MAPI包装器和加密技术,我能够从电子邮件中获得smime.p7m附件,并从中获得证书信息(包括颁发者),所以看起来一切都正常。问题是,如果我发送了一封未签名的电子邮件,并手动附加了一个smime.p7m文件,它将欺骗代码,使其认为该电子邮件已签名。
有人有解决这个问题的办法吗?我也可以使用其他方法,如Outlook Interop。
发布于 2018-11-01 07:30:52
Outlook对象模型始终尝试将签名和加密的邮件表示为常规MailItem对象。MessageClass属性将返回"IPM.Note"“。它甚至可以从MailItem.MAPIOBJECT属性返回一个伪IMessage对象。
如果您使用的是扩展的MAPI,您可以读取PR_MESSAGE_CLASS属性并检查它的值是否对应于一个签名/加密的消息类(例如"IPM.Note.SMIME.MultipartSigned")。如果要从MailItem.MAPIOBJECT属性中检索IMessage对象,请确保将其解包。
您还可以使用Redemption和它的RDOEncryptedMessage对象-它允许使用RDOEncryptedMessage.GetDecryptedMessage消息解密加密消息以及访问证书属性。
https://stackoverflow.com/questions/53092614
复制相似问题