0
bin/cradle auth-verify-mail auth_id=1 auth_slug=taku.haider1987@gmail.com auth_updated=123456 host=localhost
PHP Warning:  stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in C:\Heroes\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php on line 95

https://cradlephp.github.io/

我正在使用 php 的 cradle -> openssl -> swiftmailer 来连接到 gmail。

发送 smtp.gmail.com:587 时出现上述身份验证错误

Openssl 应该能够处理 tls。我仔细检查了用户名/密码,端口通过路由器转发,防火墙有例外,不同的端口,绕过 dns 并尝试通过 cacert.pem

我将不胜感激建议。

4

1 回答 1

0

您在这里遇到的问题是,当您通过 TLS 连接时,您的 TLS 客户端没有用于签署 Gmail 证书的公共根证书的副本,因此无法对其进行验证。

您的 CA 证书包很可能已过期。Gmail 将几年前使用的 CA 更改为许多旧操作系统不支持的 CA。这通常在包更新中得到修复(这样做apt full-upgrade或您的服务器操作系统使用的任何等效项),但有时不是。

另一种解释是您要求您的客户连接到 gmail,但连接被拦截并重定向到您的托管服务提供商的邮件服务器(这很常见),这显然不提供匹配的证书smtp.gmail.com,所以验证失败。

如果没有看到来自 SMTP 对话的其余部分的更多调试输出,我无法判断其中哪一个是问题。

虽然我知道您正在使用 SwiftMailer,但 PHPMailer 文档对这个问题以及如何解决它有详尽的描述,同样的措施也适用于 SwiftMailer。

于 2020-09-18T08:52:45.913 回答