0

使用 OpenSSL 创建 s/mime 电子邮件并发送时,接收电子邮件会附加 smime 内容并验证签名,但通过电子邮件客户端(如 Mac Mail 和 ThunderBird)看不到电子邮件正文。所有网络邮件(例如:Gmail)都能正确读取电子邮件正文。

有没有人经历过这个?

4

2 回答 2

0

将请求检查邮件正文是否有任何解析错误。大多数网络邮件程序都有先进的 mime 解析技术,这些技术通常基于实时数据。但是像outlook、mac这样的客户端都严格按照rfc标准进行邮件解析。

我见过在 rediffmail 中正常打开但在 yahoo 上没有打开的邮件,还有在 Web 界面上打开但在 Outlook 上打开的邮件,它们只是废话。雷鸟也类似,但雷鸟可用的扩展很少。如果您安装它们,则邮件开始正确呈现。

于 2013-02-25T09:17:54.973 回答
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 将通过它在前一个 MIME 结构的末尾添加一个 .p7s 文件作为签名数据,而不是将它们全部打包。

第一的:

flags |= PKCS7_DETACHED;

并签字。

p7 = PKCS7_sign(scert, skey, NULL, in, flags);

示例: https ://github.com/openssl/openssl/blob/6f0ac0e2f27d9240516edb9a23b7863e7ad02898/demos/smime/smsign.c

于 2017-01-10T01:46:14.550 回答