提问人:Elio Chamy 提问时间:11/13/2023 最后编辑:lemElio Chamy 更新时间:11/19/2023 访问量:1161
Laravel 邮件发送 Amazon SES 不再支持 TLS 1.0 和 TLS 1.1 连接
Laravel mail send Amazon SES no longer supports TLS 1.0 and TLS 1.1 connections
问:
我在 Ubuntu EC2 上使用 Laravel 5.1 和 PHP 5.6.40。我有一个非常大的项目,无法在几个小时或几天内更新。
我的服务器版本是 OpenSSL 1.1.1,我已经从我的 PC 到我的网站进行了测试,并且我得到了 HTML 页面的成功响应。
我还检查了我的 Ubuntu 上的 OpenSSL 版本curl --tlsv1.2 mywebsite.com
openssl s_client -connect mywebsite.com:443 -tls1_2
我得到了“CONNECTED”响应。我还检查了支持 tls1.2 的 Swift Mailer 版本 5.4.12。
但是在Laravel中崩溃了,并带有消息的错误异常mail::send
Swift_TransportException
Expected response code 250 but got code "554", with message "554 Access denied: Amazon SES no longer supports TLS 1.0 and TLS 1.1 connections. You must update your client to use TLS version 1.2 or above.
如果我检查的所有版本都支持 tls 1.2,我不知道是什么原因导致了问题。PHP的:5.6.40,Openssl:1.1.11
答:
解决: 如果您的服务器中启用了正确版本的 open ssl、php 和 tls1.2,但在 swiftmailer 中仍然面临此问题
转到 laravel root,然后是 vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport
打开 streambuffer.php 查找 startTLS() 函数
将其替换为
公共函数 startTLS() { 返回 stream_socket_enable_crypto($this->_stream, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT); }
现在 Swift 将只使用 TLS 1.2
这是一个使用 php 5.6 和 laravel 5.1 的解决方案
评论