我在验证邮件签名时遇到问题。当我从服务器下载消息并运行Smime.Verify方法时,它的效果很好-我可以看到该消息由IsSigned属性签名,并从该方法的结果中获取有关证书的详细信息。下载消息后,我将其作为新类型存储在数据库中。此类型的对象包含附加到下载消息的“ smime.p7s”文件的元数据。我想实现使用户能够按需验证消息的功能。为此,我将邮件对象转换为MailBee.Mime.MailMessage对象。我将“ smime.p7s”文件添加为该对象的附件,如下所示:
mailMessage.Attachments.Add(bytes, fileName, String.Empty, null, null, NewAttachmentOptions.None, MailTransferEncoding.Base64)
然后,我将此消息保存到eml文件,重新读回,IsSigned属性为false,附件列表为空。我不知道我在做什么错。
我试图查看它在Thunderbird中是如何工作的-当我将签名的消息导出到.eml文件,然后使用LoadMessage方法打开它时,它表明该消息已签名,“ smime.p7s”附件在列表中,我可以使用验证方法成功获取证书详细信息。
答案 0 :(得分:1)
好的,借助MailBee支持,问题已解决。
“关于Content-Type。您不能仅添加“ smime.p7s”附件以使消息签名(它不会获得“ Content-Type:multipart / signed”标头)。使用Sign / SignAndEncrypt方法是签名消息的唯一方法。”