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


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

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

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


1354
2017-12-31 12:23


起源

什么是你的PHP版本? - Ifedi Okonkwo
@IfediOkonkwo 5.5.2 - omarsafwany
与此同时,我猜你已经能够解决这个问题了?已经四个月了。 - Ifedi Okonkwo
@IfediOkonkwo遗憾的是没有:/ - omarsafwany
你有哪个服务器?如果你有xampp检查你的apache错误日志,可能你有这样一行:AH01909:www.example.com:443:0服务器证书不包含与服务器名称匹配的ID - rebduvid


答案:


我有同样的错误:无法与主机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;

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


10
2018-06-03 17:56



谢谢先生,这件事对我有用,因为我只是为了我的FYP使用它而且我没有必要让它安全,所以这个解决方案完美无缺 - Mohsin Abbas


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

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=test@gmail.com
MAIL_PASSWORD=testpassword

并填写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,

];

并使用此清除配置缓存。

php artisan config:cache


4
2017-12-22 13:46



你好试试这个 - Adnane
对于直播服务器还需要用户名和密码? - Chintan Mathukiya


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


1
2018-01-05 11:25



是的,仍然没有任何效果:/ - omarsafwany
同样的问题在这里 - Gabriel Matusevich
那对我有用!当我在windows中使用apache时,我需要放入tls。所以也许这是一个ssl配置问题。 - rebduvid


https://accounts.google.com/DisplayUnlockCaptcha https://www.google.com/settings/security/lesssecureapps

ENV

MAIL_DRIVER = SMTP

MAIL_HOST = smtp.gmail.com

MAIL_PORT = 587

MAIL_USERNAME=test@gmail.com

MAIL_PASSWORD =测试

MAIL_ENCRYPTION = TLS / ******** /

email.php

'from'=> ['address'=>'test@gmail.com','name'=>'test'],


0
2017-12-22 12:03



介意解释? - CinCout
你必须去拖曳2链接whs有相同的错误 - Adnane
这个 support.google.com/mail/answer/14257?hl=en - Adnane
如果你不添加一些解释,很快人们就会开始贬低。您只有代码和仅链接答案的组合。请阅读 怎么回答 - davejal


经过漫长的搜索时间,这对我有用,最好的配置:

'driver' => 'smtp',
'host' => 'smtp-mail.outlook.com',
'port' => 587, ( or 25)
'encryption' => 'tls',

0
2017-11-12 18:46





MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=test@gmail.com
MAIL_PASSWORD=testpassword

-1
2018-02-23 09:40





您无法从本地主机发送电子邮件 默认

如果您正确配置文件,您将能够从中发送电子邮件。

您还可以尝试在服务器或生产区域上载该站点。它会工作。


-4
2018-05-25 21:28



可以从localhost发送邮件,因为我已尝试从其他笔记本电脑和邮件成功发送。我的配置似乎有问题,到目前为止我无法想象 - omarsafwany
确实如此,但不推荐。您必须安装邮件服务器并重新配置工作区。我建议让一个小的(免费)主机尝试一下。 - Robin
如果您的php配置文件配置正确,则无需小型(免费)主机,localhost(xampp,wamp..etc)可以发送电子邮件。 - RileyManda