在进行投票或复制之前,请阅读说明。
我知道这个问题被多次询问并且有不同的解决方案,我已经尝试了所有但没有人工作过。这是我的设置。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=abc@mydomain.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl
应用程序当前正在Centos 7
操作系统上运行。
我总是得到
Swift_TransportException in StreamBuffer.php line 269: Connection could not be established with host smtp.gmail.com [Connection timed out #110]
at Swift_Transport_StreamBuffer->initialize(array('protocol' => 'ssl', 'host' => 'smtp.gmail.com', 'port' => '465', 'timeout' => '30', 'blocking' => '1', 'tls' => false, 'type' => '1', 'stream_context_options' => array())) in AbstractSmtpTransport.php line 113
我尝试了所有解决方案,取代:smtp.gmail.com with 173.194.65.108
或替换smtp.gmail.com by gmail-smtp-msa.l.google.com
。当我执行这两个步骤时,它找不到服务器错误。
如果我从smtp to sendmail or mail
更改邮件驱动程序,则不会抛出任何错误,但不会发送电子邮件。
如果我使用smtp.gmail.com的ip地址,我得到了相同的结果。如果我从465 to 587
更改端口并从ssl to tls
更改加密,则不会发生任何事情。
我还在etc/gai.conf
中创建了一个文件并放置了precedence ::ffff:0:0/96 100
。它工作了一次。但是两个小时后,它停止工作并开始抛出相同的错误。
我也试过使用我的gmail id,但都是徒劳的。
我无法测试的唯一解决方案是验证httpd_can_sendmail
每当我运行命令getsebool httpd_can_sendmail
时,我得到getsebool: SELinux is disabled
。这是问题还是有其他方法来解决它?
答案 0 :(得分:1)
这是我的工作邮件配置文件:
return [
'driver' => 'smtp',
'host' => 'smtp.gmail.com',
'port' => 587,
'from' => ['address' => '*******@gmail.com', 'name' => '****'],
'encryption' => 'tls',
'username' => '*******@gmail.com',
'password' => '*******',
'sendmail' => '/usr/sbin/sendmail -bs',
];
但是从你的问题我可以看到你已经尝试了所有这些,所以我可以假设这是一个基于错误和连接超时的网络问题,我的意思是有什么东西阻止了你的连接,如果你有,可能是你的防火墙。
首先你应该检查端口587是否打开,或者你可以检查其他应用程序是否可以连接smtp.gmail.com(不知道如何在centOs中进行)。
最后这可能不是问题,但你必须启用“允许安全性较低的应用程序”。在您的谷歌帐户中只是为了测试。 (这不是永久的解决方案,但是对于测试,如果它有效,那么你应该在谷歌帐户启用两步验证,然后创建新的应用程序,你可以创建新的特殊密码,你可以使用它作为smtp服务器的密码)
答案 1 :(得分:0)
由于您使用的是 gmail,但我不知道您设置的密码是什么,因此 MAIL_PASSWORD 变量必须与 gmail 应用程序密码相同。在这种情况下,Gmail 提供了第三方应用服务,以便这些(在这种情况下是您的应用)可以使用这种类型的身份验证发送电子邮件。