Laravel 8:无法与主机 smtp.gmail.com 建立连接

Posted

技术标签:

【中文标题】Laravel 8:无法与主机 smtp.gmail.com 建立连接【英文标题】:Laravel 8: Connection could not be established with host smtp.gmail.com 【发布时间】:2021-01-04 09:24:22 【问题描述】:

我正在尝试使用 Google SMTP 服务器从我的 laravel 8 应用程序发送一封简单的电子邮件,但它不起作用,我收到此错误:

Swift_TransportException
Connection could not be established with host smtp.gmail.com :stream_socket_client(): SSL:

stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed 

我发现了很多关于这个问题的 SO 帖子,但没有一个对我有用,这是我尝试过的列表:

在 google 帐户中启用安全性较低的应用 使用端口 465 和 587 使用smtp.googlemail.comsmtp.gmail.com 使用MAIL_ENCRYPTION=tlsssl'stmp' 更改为'sendmail' Blocking switmailer's ssl constraint

还有什么我可以尝试的吗?

这是我的邮件配置,虽然我尝试了很多版本:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=address@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="$APP_NAME"

【问题讨论】:

查看https://***.com/questions/30556773/how-to-fix-stream-socket-enable-crypto-ssl-operation-failed-with-code-1 能否请您发送邮件配置。 (只需省略密码等) @ChrisTownsend 当然,我已将其添加到问题中 【参考方案1】:

试试这个并添加额外的身份验证模式环境变量

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=direction@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="$APP_NAME"
MAIL_AUTH_MODE=login

现在去config/mail.php

改变

    '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,
        'auth_mode' => null,
    ],

    '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,
        'auth_mode' => env('MAIL_AUTH_MODE'),
    ],

【讨论】:

它一直失败...抛出问题中显示的第二条错误消息 随机一张。您的环境是否有正确的日期和时间设置您所在的时区?【参考方案2】:

最后,这是 Windows 的问题。我发现一些帖子指出 Windows 无法执行某些邮件服务。我在一台装有 Ubuntu 的计算机上尝试了完全相同的代码,并且在第一次尝试时就成功了。

【讨论】:

【参考方案3】:

我遇到了同样的问题,我只是禁用了我的防病毒软件 (Avast / windows 10) 及其工作。

【讨论】:

你节省了我的时间,兄弟!谢谢!它也对我有用!

以上是关于Laravel 8:无法与主机 smtp.gmail.com 建立连接的主要内容,如果未能解决你的问题,请参考以下文章

Xampp 上的 Laravel 虚拟主机无法正常工作

无法与主机 smtp.gmail.com [#0] 建立连接 - LARAVEL / XAMPP / PHP7

无法从 Laravel 应用程序发送电子邮件:无法与主机 smtp.gmail.com 建立连接 [连接超时 #110]

无法与主机 smtp.gmail.com 建立连接 Network is unreachable #101 error in Laravel email

Laravel 8 无法清除缓存。确保您具有适当的权限

无法在 laravel 5.6 电子邮件发送中与主机 smtp.gmail.com [连接被拒绝 #111] 建立连接