使用Open SSL发送S MIME电子邮件,电子邮件正文未显示

时间:2013-02-25 04:48:57

标签: email openssl multipart smime

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

有没有人经历过这个?

2 个答案:

答案 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);

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