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)
您只需要更改该行.
Arj*_*tra 13
经过大量研究后,我发现这个有用.
https://www.google.com/settings/security/lesssecureapps.
打开上面的链接.
单击"启用".并保存它.
然后尝试再次发送电子邮件.
对我来说它有效.
通过如下更改我的 .env 文件解决了我的问题:
'driver' => 'sendmail',
Run Code Online (Sandbox Code Playgroud)
问题是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)
除了加密和端口之外,我可以使用相同的设置.改成:
'encryption' => ssl,
'port' => 465,
Run Code Online (Sandbox Code Playgroud)
由于这仅适用于localhost加密线,因此也应该是特定于环境的.所以相反,我做了以下:
env('MAIL_ENCRYPTION','tls'),
Run Code Online (Sandbox Code Playgroud)
现在你可以在.env文件中设置它,这是特定于环境的,应该是.gitignore
| 归档时间: |
|
| 查看次数: |
76276 次 |
| 最近记录: |