在Outlook VSTO解决方案上工作时,面临获取电子邮件发件人证书(PR_USER_X509_CERTIFICATE)的问题,当PR_ADDRTYPE_W是SMTP时,而在EX的情况下,即EXCHANGE没有异常抛出以下代码
这是我的示例代码c#获取用户证书
NameSpace mapiNamespace = mailItem.Application.GetNamespace("MAPI");
Recipient emailSender = mapiNamespace.CreateRecipient(mailItem.SenderEmailAddress);
emailSender.Resolve();
object[] senderCertificateInfo = emailSender.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3A701102");
我通过OutlookSpy分析了这两种邮件的区别。根据我的发现,对于EXCHANGE, PR_USER_X509_CERTIFICATE也有很多额外的属性,但对于SMTP,与EXCHANGE电子邮件相比,很少有属性可用。
有没有人能帮我拿到所有箱子的寄件人证书?
感谢除非证书以某种方式随邮件一起发送,否则在一次性SMTP地址的情况下,Outlook无法从中提取证书。
在"EX"类型发送者,证书存储在GAL中,您可以从中读取它。没有集中的全球范围的SMTP地址存储库。您所能做的最好的事情是检查您是否有一个具有匹配SMTP地址的本地联系人,该联系人可能存储有证书,但是您是需要将该证书添加到该联系人以开始的人。