我发帖是因为我已经完成了其他问题中的解决方案,但他们没有帮助。
我要做的是通过Google Apps for Business Gmail使用Swiftmailer发送电子邮件,但我一直收到此错误:
无法与主机smtp.gmail.com建立连接[连接超时#110]
我知道代码很好,因为它可以在我的本地计算机上运行,但不能在生产服务器上运行。
到目前为止我尝试过:
配置:
# Swiftmailer Configuration
swiftmailer:
transport: smtp
encryption: ssl
auth_mode: login
host: smtp.gmail.com
username: contact@mydomain.com
password: applicationspecificpassword
port: 465
我还能尝试什么?这可能是DNS问题,因为我使用的是Gmails SMTP MX记录而不是服务器。
答案 0 :(得分:10)
替换:smtp.gmail.com
173.194.65.108
实际上对我有效!
答案 1 :(得分:10)
以下步骤对我有用:
检查 httpd_can_sendmail 是否已启用,运行此getsebool httpd_can_sendmail
setsebool -P httpd_can_sendmail 1
检查 httpd_can_network_connect 是否已启用,运行getsebool httpd_can_network_connect
setsebool -P httpd_can_network_connect 1
'host' => '64.233.166.108'
'port' => '465'
我正在使用Centos
答案 2 :(得分:3)
如果你想回归使用Gmail,我只是遇到了同样的问题 - 代码在我的本地机器上工作但在真实的服务器上却没有 - 并且我认为我已经找到了导致问题的原因它(至少在我的情况下)。
如果服务器支持IPv6和IPv4,则服务器的域将解析为其IPv6版本,因此PHP会尝试连接到该版本。但是我发现smtp.gmail.com没有响应,所以30秒后脚本就放弃了并且超时了。你会认为PHP会在IPv6失败后尝试使用IPv4,但不会。
所以,当我交换smtp.gmail.com的IPv4地址(通过ping它获得)时,一切正常并且发送了电子邮件。使用IP代替域是不理想的,因为它可能会改变,但至少可以节省挖掘服务器地板的其余部分:)
答案 3 :(得分:1)
添加
74.125.130.108 smtp.gmail.com
到服务器的主机文件
答案 4 :(得分:1)
对我来说问题是我使用了tls加密,这里是TLS和SSL的端口。更改env文件后不要忘记重启。
smtp.gmail.com --- SSL --- 465
smtp.gmail.com --- StartTLS --- 587
此外,您需要change the security的Google帐户
答案 5 :(得分:0)
我在Swiftmailer Gmail Connection timed out #110发布了一个解决方案解决方案,您可以使用IPv4或IPv6。
答案 6 :(得分:0)
配置为我工作:
mailer_transport: gmail
mailer_host: smtp.gmail.com
mailer_user: my_email@gmail.com
mailer_password: my_pass
mailer_encryption: ssl
mailer_auth_mode: login
mailer_port: 465
答案 7 :(得分:0)
我只是遇到了这个问题,在寻找解决方案之后,这完全取决于我的主机的安全设置(在本例中为Scaleway)。我必须打开安全设置并启用传出SMTP。