我正在尝试在 laravel 9 中注册一个需要验证电子邮件才能登录的项目,但它一直给我这个错误:
无法与主机“ssl://smtp.gmail.com:465”建立连接:stream_socket_client():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败
这是我的.env:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
MAIL_FROM[email protected]
MAIL_FROM_NAME="${APP_NAME}"
这是邮件配置文件:
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'local_domain' => env('MAIL_EHLO_DOMAIN'),
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
'failover' => [
'transport' => 'failover',
'mailers' => [
'smtp',
'log',
],
],
]
任何想法,我该如何解决?
我试过这个
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxx
MAIL_PASSWORD=xxx
但是不起作用
编辑:我在这里找到了解决方案并且有效 LARAVEL 9. 错误 LARAVEL 电子邮件:无法使用 STARTTLS 连接:stream_socket_enable_crypto():SSL 操作失败,代码为 1
我知道一些解决方案:
解决方案1:如果您有其他AV,例如Avast,请禁用它来运行测试。有些AV有关于Mail Shield的Core Shield。这是 防止恶意邮件被传递或检索。
另一种解决方案:
解决方案 2: 转到
在config/mail.php
mailers => smtp
之后添加此行'timeout' => null,
另一种解决方案(不推荐):
解决方案3:转到
'stream' => [ 'ssl' => [ 'allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false, ], ],
注释此代码:并在后面添加:vendor\swiftmailer\lib\classes\Swift\Transport\Streambuffer.php
$options = [];