Swift_TransportException·无法与主机建立连接 smtp.sendgrid.net [连接超时 #110]
Swift_TransportException·Connection could not be established with host smtp.sendgrid.net [Connection timed out #110]
我正在使用 Laravel 4.2,它使用 swiftmailer 库来发送电子邮件。我正在尝试使用 Sendgrid SMTP 服务,但我的暂存服务器上出现超时错误。
在我的本地开发中一切正常。
mail.php
return array(
'driver' => 'smtp',
'host' => 'smtp.sendgrid.net',
'port' => 587,
'encryption' => 'tls',
'username' => 'username'
'password' => ...
我已经切换到端口 465 和 'ssl',在本地工作但在服务器上不成功。服务器上启用了 OpenSSL。
有趣的是 Mandrill smtp(它使用不同的 laravel 驱动程序)和本地服务器 smtp 在服务器上工作正常。
端口已打开。我可以从服务器远程登录到 sendgrid。我还切换了 IPv4 的主机名只是为了检查,因为人们在使用 smtp.gmail.com IPv4 与 IPv6 时遇到的所有麻烦。没有影响。
具体错误位置是这样的:
$this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
if (false === $this->_stream) {
throw new Swift_TransportException(
'Connection could not be established with host '.$this->_params['host'].
' ['.$errstr.' #'.$errno.']');
所以我的问题是我应该检查什么来弄清楚为什么 swiftmailer 和 stream_socket_client php 函数在本地工作但在服务器上不工作。我在本地 mac,服务器是 运行 centOS。
看起来该应用程序正被无法访问端口 587 的用户 运行 访问。因此,如果您 运行 遇到此问题,请再次确保您正在与 运行宁你的应用程序。
我正在使用 Laravel 4.2,它使用 swiftmailer 库来发送电子邮件。我正在尝试使用 Sendgrid SMTP 服务,但我的暂存服务器上出现超时错误。
在我的本地开发中一切正常。
mail.php
return array(
'driver' => 'smtp',
'host' => 'smtp.sendgrid.net',
'port' => 587,
'encryption' => 'tls',
'username' => 'username'
'password' => ...
我已经切换到端口 465 和 'ssl',在本地工作但在服务器上不成功。服务器上启用了 OpenSSL。
有趣的是 Mandrill smtp(它使用不同的 laravel 驱动程序)和本地服务器 smtp 在服务器上工作正常。
端口已打开。我可以从服务器远程登录到 sendgrid。我还切换了 IPv4 的主机名只是为了检查,因为人们在使用 smtp.gmail.com IPv4 与 IPv6 时遇到的所有麻烦。没有影响。
具体错误位置是这样的:
$this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
if (false === $this->_stream) {
throw new Swift_TransportException(
'Connection could not be established with host '.$this->_params['host'].
' ['.$errstr.' #'.$errno.']');
所以我的问题是我应该检查什么来弄清楚为什么 swiftmailer 和 stream_socket_client php 函数在本地工作但在服务器上不工作。我在本地 mac,服务器是 运行 centOS。
看起来该应用程序正被无法访问端口 587 的用户 运行 访问。因此,如果您 运行 遇到此问题,请再次确保您正在与 运行宁你的应用程序。