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

时间:2014-12-31 12:23:47

标签: laravel-4 gmail

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

建立连接

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

我也试过了this,但它没有用。我发现很多人都遇到了同样的问题,但我找到的解决办法却没有用。

16 个答案:

答案 0 :(得分:13)

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

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

$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;

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

答案 1 :(得分:5)

在.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,

];
&#13;
&#13;
&#13;

并用此清除配置缓存。

&#13;
&#13;
php artisan config:cache
&#13;
&#13;
&#13;

答案 2 :(得分:5)

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

MAIL_DRIVER=sendmail

如果仍然无效,请尝试在邮件端口之间切换

MAIL_PORT=587

MAIL_PORT=465

答案 3 :(得分:3)

这是与我合作的东西

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=<your email>
MAIL_PASSWORD=<your app password>
MAIL_ENCRYPTION=tls

如果您通过自己的帐户进行两次身份验证,则应生成新的应用密码并用于您的环境文件。这就是我的工作。

答案 4 :(得分:2)

在本地主机中你可以设置你的 MAIL_DRIVER=smtp 但在像 cpanel 这样的真实服务器上你必须设置 MAIL_DRIVER=sendmail 并编辑你的 config/mail.php 'default' => env('MAIL_MAILER', 'sendmail'), 但这不是个好主意,因为在谷歌上发送邮件后,你会在 gmail 上收到这样的错误:

小心这条消息 Gmail 无法验证它是否确实来自 tenetup.reminderme@gmail.com。避免点击链接、下载附件或回复个人信息。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

'stream' => [
        'ssl' => [
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ]

对我有用。

好,我的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

答案 7 :(得分:1)

将.env和mail.php中的邮件驱动程序更改为MAIL_DRIVER = mailgun

答案 8 :(得分:0)

ideone https://accounts.google.com/DisplayUnlockCaptcha

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'=&gt; ['地址'=&gt; 'test@gmail.com','name'=&gt; '测试'],

答案 9 :(得分:0)

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

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

答案 10 :(得分:0)

对我来说,事实证明TripMode阻止了nginx和php-fpm。因此,请确保没有类似这样的应用程序或防火墙阻止与邮件服务器的连接。

答案 11 :(得分:0)

如果您使用的是Amazon EC2,请确保将SMTP(25)和SMTPS(465)的出站规则设置为任何地方。

MAIL_MAILER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=yourgmailemail@gmail.com
MAIL_PASSWORD='yourgmailpassword'
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=yourgmailemail@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
```



  [1]: https://i.stack.imgur.com/Q9rAn.png

答案 12 :(得分:0)

对我来说,原因是我的 ISP 或家用路由器以某种方式阻止了 SMTP 协议

答案 13 :(得分:0)

在 Cpanel 上,仅将 MAIL_DRIVER 更改为从 .env 中的 smtp 发送邮件对我有用。

MAIL_DRIVER=sendmail
MAIL_HOST=smtp.example.com
MAIL_PORT=465
MAIL_USERNAME=info@example.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME="${APP_NAME}
MAIL_FROM_ADDRESS=info@example.com

答案 14 :(得分:-1)

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

答案 15 :(得分:-4)

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

如果您正确配置文件,则可以从中发送电子邮件。

您还可以尝试在服务器或生产区域上传网站。它会起作用。