在您的 class.phpmailer.php 文件中更改数据:
public $sign_cert_file = ’’;
public $sign_key_file = ’’;
public $sign_key_pass = ’’;
比找到出现的:
if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) {
并更改为:
if (@openssl_pkcs7_sign($file, $signed, file_get_contents($this->sign_cert_file), array(file_get_contents($this->sign_key_file), $this->sign_key_pass), null)){
这意味着您通过对象 $this->sign_key_file 而不是文件包含 file://
比更改您的临时名称:
$file = tempnam(’’, ’mail’);
...
$signed = tempnam("", "signed");
到:
$file = tempnam(’./tmp/’, ’mail’);
...
$signed = tempnam("./tmp/", "signed");
这意味着您正在使用 tmp 目录服务器。
现在如何显示发送和放置数据证书文件的示例:
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsMail();
$mail->AddAddress("email@example.com");
$mail->Subject = "Test 1";
$mail->Body = "Test 1 of PHPMailer.";
// CUSTOMISED SIGN EMAIL : START
$mail->sign_cert_file="/xxx/key.pem";
$mail->sign_key_file="/xxx/key.pem";
$mail->sign_key_pass="yyy";
// CUSTOMISED SIGN EMAIL : END
$mail->Send(); // Send encrypted email!