从php向Gmail发送数字签名电子邮件的问题

从php向Gmail发送数字签名电子邮件的问题,php,mime-types,digital-signature,phpbb,smime,Php,Mime Types,Digital Signature,Phpbb,Smime,我正在尝试通过PHPBB发送数字签名的电子邮件。我已经为我们所有的exchange电子邮件和各种各样的客户提供了很好的服务,但它对gmail用户不起作用。谷歌似乎没有处理/读取多部分mime类型。也许我错过了一些愚蠢或简单的事情?谢谢你的关注 下面是一封测试电子邮件的示例,证书被#屏蔽: 这是一条S/MIME签名消息 ------############################内容类型:text/html;charset=“iso-8859-1” 内容传输编码:8比特 你好,管理员 祝贺

我正在尝试通过PHPBB发送数字签名的电子邮件。我已经为我们所有的exchange电子邮件和各种各样的客户提供了很好的服务,但它对gmail用户不起作用。谷歌似乎没有处理/读取多部分mime类型。也许我错过了一些愚蠢或简单的事情?谢谢你的关注

下面是一封测试电子邮件的示例,证书被#屏蔽:

这是一条S/MIME签名消息

------############################内容类型:text/html;charset=“iso-8859-1”

内容传输编码:8比特

你好,管理员

祝贺你。如果您收到此电子邮件,则phpBB是正确的 配置为发送电子邮件

如果您需要帮助,请访问phpBB支持论坛 -

--

------############################内容类型: 申请书/x-pkcs7-签名;name=“smime.p7s” 内容传输编码:base64内容处置:附件; filename=“smime.p7s”

# # # # # # # # # # # # # # # # # # # # # ------############################--

以下是我正在使用的代码片段:

// Send message ...
$mail_to = ($to == '') ? 'undisclosed-recipients:;' : $to;
$fp = fopen("/var/www/ssl/ext/phpbbservices/digests/includes/msg.txt", "w"); 
$this->msg = "".'Content-Type: text/html; charset="iso-8859-1" 
Content-Transfer-Encoding: 8bit'. "\n\n" .  $this->msg . "\n";
fwrite($fp, $this->msg); 
fclose($fp);

openssl_pkcs7_sign("/var/www/ssl/ext/phpbbservices/digests/includes/msg.txt", "/var/www/ssl/ext/phpbbservices/digests/includes/signed.txt", file_get_contents("/var/www/ssl/ext/phpbbservices/digests/includes/publicCert.pem"), array(file_get_contents("/var/www/ssl/ext/phpbbservices/digests/includes/privateKey.pem"), 'PASSWORD_FOR_PRIVATE_KEY'), $headers); 
$data = file_get_contents("/var/www/ssl/ext/phpbbservices/digests/includes/signed.txt");


$parts = explode("\n\n", $data, 2);
$newHeader = explode("\n", $parts[0]);

$newMessage =  $parts[1];


$result = phpbb_mail($mail_to, $this->subject, $newMessage, $newHeader, PHP_EOL, $err_msg);   

这是一件简单的事情! exchange标头与signed.txt处理文件中的内容不匹配。所以我深入研究,发现phpBB系统正在创建一个标题,包括内容类型:text/html;charset=charset=“iso-8859-1”。因此标题有两个,一个和正确的“内容类型:多部分/签名;协议=“应用程序/x-pkcs7-签名”;micalg=“sha-256”;“Exchange修改了标题,只忽略/清除了第一个条目,而google忽略了第二个内容类型,只使用了第一个

因此,最终我只需在设置内容类型的代码部分注释掉phpBB头条目