使用OpenSSL创建s / mime电子邮件并发送时,接收电子邮件附带了smime内容并验证了签名,但通过电子邮件客户端(如Mac Mail和ThunderBird)无法看到电子邮件正文。所有网络邮件(例如:Gmail)都能正确读取电子邮件正文。
有没有人经历过这个?
答案 0 :(得分:0)
请求检查邮件正文是否有任何解析错误。大多数Web邮件程序都具有高级的mime解析技术,这些技术通常基于实时数据。但像outlook,mac这样的客户严格遵循rfc标准进行邮件解析。
我看过邮件在rediffmail中正常打开但在雅虎上没有打开,也是在网络界面上打开的邮件,但在Outlook上它们只是废话。同样对雷鸟来说,但雷鸟的扩展很少。如果你安装它们,那么邮件就会开始正常呈现。
答案 1 :(得分:0)
您必须使用NO_DETACHED签署MIME。就像这样:
int flags = PKCS7_STREAM;
p7 = PKCS7_sign(scert, skey, NULL, in, flags);
NO_DETACHED意味着OpenSSL会将所有MIME和signedData签名并打包到.p7m文件,这意味着普通客户端只能在电子邮件中找到.p7m文件。只需使用DETACHED标志,OpenSSL会将.p7s文件作为签名数据添加到前一个MIME结构的末尾,而不是打包所有这些。
首先:
flags |= PKCS7_DETACHED;
并签名。
p7 = PKCS7_sign(scert, skey, NULL, in, flags);