最近我使用的第三方电子邮件服务提供商发生了变化。他们禁用了对 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?
Nic*_*ine 28
在文件 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;
}
Run Code Online (Sandbox Code Playgroud)
您应该在服务器上的一个小型 PHP 脚本中运行 phpinfo(),以确保 TLS 1.2 首先可用。
这不取决于 PHPMailer,而是取决于您用来运行它的 PHP 版本,因此解决方案是更新您的 PHP 版本。与 TLS 相关的主要变化主要发生在 PHP 5.6 中,因此如果您确实坚持使用这个旧版本,那么升级到 PHP 5.6 将是一个很好的中间点。
| 归档时间: |
|
| 查看次数: |
24248 次 |
| 最近记录: |