Laravel - 无法与主机smtp.gmail.com [#0]建立连接

oma*_*any 18 gmail laravel-4

我正在尝试使用来自localhost的Laravel从Gmail发送电子邮件.我收到此错误:无法与主机smtp.gmail.com [#0]建立连接

我正在使用端口465的ssl.我也尝试过587但它没有用.

我也尝试了这个,但它没有用.我发现很多人都遇到了同样的问题,但我找到的解决方案却没有用.

Ahm*_*aan 24

在 Laravel 项目目录中,编辑config/mail.php并添加以下内容:

'stream' => [
        'ssl' => [
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ]
Run Code Online (Sandbox Code Playgroud)

它对我有用。

仅供参考,我的 SMTP 设置是:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=[Full Gmail Address]
MAIL_PASSWORD=[Google App Password obtained after two step verification on Google Account Page]
MAIL_ENCRYPTION=ssl
Run Code Online (Sandbox Code Playgroud)

  • 我不需要流部分。造成差异的是两步验证后的应用程序密码和 php artisan config:cache (2认同)
  • 这在 Laravel 9 中不再起作用 (2认同)

ino*_*tia 13

我有同样的错误:无法与主机smtp.gmail.com [#0]建立连接,并按照此处列出的步骤进行操作:https://github.com/swiftmailer/swiftmailer/issues/544.

尝试_establishSocketConnection()在第263 行的Swift/Transport/StreamBuffer.php中添加以下行:

$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;
Run Code Online (Sandbox Code Playgroud)

请注意,这不是一个完美的解决方案,因为它涉及:a)黑客可能在SwiftMailer更新中覆盖的核心代码,以及b)在您不再验证连接时降低应用程序的安全性.但作为临时解决方案,它对我有用.


Ake*_*med 13

.env文件中的这一行更改将使其工作

MAIL_DRIVER=sendmail
Run Code Online (Sandbox Code Playgroud)

如果它也没有效果尝试在邮件端口之间切换

MAIL_PORT=587
Run Code Online (Sandbox Code Playgroud)

或者

MAIL_PORT=465
Run Code Online (Sandbox Code Playgroud)

仅当您在 google 帐户下启用“允许安全性较低的应用程序访问”时,这才有效


小智 6

在您的.env文件中,您需要设置电子邮件地址和电子邮件帐户的密码。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=test@gmail.com
MAIL_PASSWORD=testpassword
Run Code Online (Sandbox Code Playgroud)

并填写在mail.php

<?php

return [


		'driver' => env('MAIL_DRIVER', 'smtp'),


		'host' => env('MAIL_HOST', 'smtp.mailgun.org'),


		'port' => env('MAIL_PORT', 587),


		'from' => ['address' => 'yourEmail@gmail.com', 'name' => 'Your Title'],


		'encryption' => 'tls',


		'username' => env('MAIL_USERNAME'),



		'password' => env('MAIL_PASSWORD'),


		'sendmail' => '/usr/sbin/sendmail -bs',


		'pretend' => false,

];
Run Code Online (Sandbox Code Playgroud)

并以此清除配置缓存。


小智 5

这是我的工作

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=<your email>
MAIL_PASSWORD=<your app password>
MAIL_ENCRYPTION=tls
Run Code Online (Sandbox Code Playgroud)

如果您使用您的帐户进行两次身份验证,则应生成新的应用程序密码并用于您的 env 文件。这就是我的工作。


Chr*_*end 4

您是否尝试过将加密更改为 tls ?我目前使用 Gmail SMTP 服务器从我的 Laravel 应用程序发送电子邮件。我使用 TLS 和端口 587