我需要实现一个脚本来代表现有的电子邮件服务器发送电子邮件。 电子邮件服务器仅支持一种身份验证方式,即“客户端证书身份验证”。我只有一个电子邮件地址和证书,通过我的PHP脚本(无密码)进行身份验证,并发送电子邮件。这是我对服务器的唯一了解:(。
我对客户端证书身份验证不太了解,已经搜索过但无法找到针对特定情况的任何有用文档。
一些好友的请求可以指向正确的方向吗?
答案 0 :(得分:0)
好问题。这有点猜测,但我希望您需要禁用普通身份验证并通过传递给TLS连接的stream context options提供客户端证书。
我建议通过常规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格式的证书。
查看this example以获取使用SSL流上下文选项的更完整代码。