最近我使用的第三方电子邮件服务提供商发生了变化。他们禁用了对 TLS 1.0 和 TLS 1.1 的支持。
我为仍然使用 php 5.3 和 phpmailer 5.2 的古老系统提供支持。
我的测试表明 TLS 1.2 已启用。
但是,禁用 TLS 1.0 和 1.1 后,PHPMailer 代码无法连接到电子邮件服务器
另外,请注意,我不是全职 php 专家。
有没有办法让 PHPMailer 5.2 使用 tls 1.2?
在文件 class.smtp.php 中查找常量 STREAM_CRYPTO_METHOD_TLS_CLIENT 并将其更新为 STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
像这样:
public function startTLS()
{
if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
return false;
}
// Begin encrypted connection
if (!stream_socket_enable_crypto(
$this->smtp_conn,
true,
STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
)) {
return false;
}
return true;
}
您应该在服务器上的一个小型 PHP 脚本中运行 phpinfo(),以确保 TLS 1.2 首先可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)