我需要实现一个脚本来代表现有的电子邮件服务器发送电子邮件。 电子邮件服务器仅支持一种身份验证方式,即"客户端证书身份验证"。我只有一个电子邮件地址和一个证书,可以通过我的php脚本进行身份验证(没有密码(,并发送电子邮件。这是我对服务器:(的唯一了解。
我对客户端证书身份验证没有太多了解,已经搜索过,但找不到针对特定情况的任何有用文档。
一些好友的请求可以指出我正确的方向吗?
好问题。这有点猜测,但我希望您需要禁用正常身份验证并通过传递给 TLS 连接的流上下文选项提供客户端证书。
我建议通过常规的PHPMailer SMTP + STARTTLS连接进行这些更改:
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->SMTPAuth = false;
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => true,
'local_cert' => '/path/to/client_cert_and_key.pem'
]
];
本地证书文件应包含 PEM 格式的客户端私钥和证书。
有关使用 SSL 流上下文选项的更完整代码,请查看此示例。