我的配置:
PHP 版本: 7.4.5
拉拉维尔版本:7
邮件版本:6.2.3
观察到的行为
Swift_TransportException
Connection could not be established with host ... :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
预期行为
工作 ->我认为底层库和使用加密方法发生了重大变化,因为我的系统正在使用完全相同的 swiftmailer 版本。
重现示例
- 安装最新的 Laravel 7。
- 创建正确的配置和邮件。
- 尝试在启用端口 587 和 TLS 的情况下发送电子邮件。错误:
stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
- 尝试在启用端口 465 和 SSL 的情况下发送电子邮件。错误:
Connection could not be established with host ... :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
请注意:
- 配置是 100% 验证的,我可以从许多不同的系统发送电子邮件,但不使用此库 -> swiftmailer -> used_by -> laravel。
- 我尝试了不同的smtp邮件供应商,结果是相同的。
我在这里做错了什么?
解决方案真的很琐碎。
解决这个问题所需要的是建立MAIL_ENCYRPTION
tcp
.env
。 而不是在相应的端口上tls
或ssl
。
由于一些奇怪的原因,使用适当的端口设置tls
(无论版本如何(或ssl
不起作用。
因此,如果您遇到这些类型的问题,请设置MAIL_ENCYRPTION=tcp
- 这应该可以解决您的错误。
快乐编码...