通过Laravel使用gmail smtp:无法与主机smtp.gmail.com建立连接[连接超时#110]

Ahm*_*mad 18 smtp swiftmailer laravel-4

当我尝试使用GMail SMTP通过Laravel发送电子邮件时,我遇到以下错误:

Swift_TransportException

Connection could not be established with host smtp.gmail.com [Connection timed out #110]
Run Code Online (Sandbox Code Playgroud)

这是错误的痕迹:

...
 }
$this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, stream_context_create($options));
if (false === $this->_stream) {
throw new Swift_TransportException(
'Connection could not be established with host ' . $this->_params['host'] .
' [' . $errstr . ' #' . $errno . ']'...
Run Code Online (Sandbox Code Playgroud)

这是我的邮件配置:

'driver' => 'smtp',

'host' => 'smtp.gmail.com',

'port' => 587,

'from' => array('address' => 'some@example.ir', 'name' => 'some'),

'encryption' => 'tls',

'username' => 'myemail@gmail.com',

'password' => 'mypassword',

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

'pretend' => false
Run Code Online (Sandbox Code Playgroud)

我使用共享主机,localhost上的端口587已打开.

Pap*_*urf 38

我有同样的问题,我以这种方式解决了它:

'driver' => 'sendmail',
Run Code Online (Sandbox Code Playgroud)

您只需要更改该行.

  • 继续进行,但是**电子邮件**未发送。 (3认同)
  • Sendmail驱动程序选项通过服务器默认的smtp发送电子邮件。它不是通过google smtp发送邮件。这不是真正的答案。 (3认同)
  • @ mr5 config/email.php (2认同)

Arj*_*tra 13

经过大量研究后,我发现这个有用.

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

打开上面的链接.

单击"启用".并保存它.

然后尝试再次发送电子邮件.

对我来说它有效.


Eas*_*Way 7

通过如下更改我的 .env 文件解决了我的问题:

'driver' => 'sendmail',
Run Code Online (Sandbox Code Playgroud)

  • sendmail是Linux系统的lib,首先需要在服务器端激活然后它才能工作 (2认同)

小智 5

尝试

'encryption' => 'ssl',

'port' => 465,
Run Code Online (Sandbox Code Playgroud)


Joh*_*ley 5

问题是smtp.gmail.com正在解析IPv6地址,而Google服务仅在IPv4上侦听。您需要做的是设置源IP,以确保域解析为IPv4而不是IPv6。

重要方法:

    ->setSourceIp('0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

您如何在代码中使用它:

   $this->_transport = Swift_SmtpTransport::newInstance
        (
            'smtp.gmail.com',
            465,
            'ssl'
        )
            ->setUsername('username')
            ->setSourceIp('0.0.0.0')
            ->setPassword('password');
Run Code Online (Sandbox Code Playgroud)


ruu*_*ter 5

除了加密和端口之外,我可以使用相同的设置.改成:

'encryption' => ssl,
'port' => 465,
Run Code Online (Sandbox Code Playgroud)

由于这仅适用于localhost加密线,因此也应该是特定于环境的.所以相反,我做了以下:

env('MAIL_ENCRYPTION','tls'),
Run Code Online (Sandbox Code Playgroud)

现在你可以在.env文件中设置它,这是特定于环境的,应该是.gitignore