无法在 Laravel 7 中发送 SSL/TLS SMTP 电子邮件



我的配置:

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 版本。

重现示例

  1. 安装最新的 Laravel 7。
  2. 创建正确的配置和邮件。
  3. 尝试在启用端口 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
  4. 尝试在启用端口 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

请注意:

  1. 配置是 100% 验证的,我可以从许多不同的系统发送电子邮件,但不使用此库 -> swiftmailer -> used_by -> laravel。
  2. 我尝试了不同的smtp邮件供应商,结果是相同的。

我在这里做错了什么?

解决方案真的很琐碎。

解决这个问题所需要的是建立MAIL_ENCYRPTIONtcp.env。 而不是在相应的端口上tlsssl

由于一些奇怪的原因,使用适当的端口设置tls(无论版本如何(或ssl不起作用。

因此,如果您遇到这些类型的问题,请设置MAIL_ENCYRPTION=tcp- 这应该可以解决您的错误。

快乐编码...

最新更新