获取 Outlook VSTO 解决方案的发件人证书时出错



在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地址的本地联系人,该联系人可能存储有证书,但是您是需要将该证书添加到该联系人以开始的人。

最新更新