当我尝试在 Symfony 项目中使用
swiftmailer
发送电子邮件时,出现此异常:
刷新电子邮件队列时发生异常:无法连接 与主机 smtp.gmail.com 建立 [#0]
这是我的 config.yml:
swiftmailer:
transport: '%mailer_transport%'
encryption: '%mailer_encryption%'
port: '%mailer_port%'
auth_mode: '%mailer_auth_mode%'
host: '%mailer_host%'
username: '%mailer_user%'
password: '%mailer_password%'
spool: { type: memory }
和我的参数.yml:
parameters:
database_host: 127.0.0.1
database_port: null
database_name: pidev
database_user: root
database_password: null
mailer_transport: smtp
mailer_encryption: ssl
mailer_auth_mode: login
mailer_port: 465
mailer_host: smtp.gmail.com
mailer_user: 'myGmailAddress'
mailer_password: 'mypassword'
secret: ThisTokenIsNotSoSecretChangeIt
我在 Gmail 帐户上允许使用安全性较低的应用程序,并禁用了防病毒软件和防火墙。 另外,我已经尝试过 ping smtp.gmail.com,它工作正常,但我遇到了同样的问题。
使用 Gmail 发送电子邮件非常简单。配置以下键:
swiftmailer:
transport: gmail
username: %mailer_user%
password: %mailer_password%
你就完成了!
问题解决了,我只需添加以下两行代码:
$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;
在
vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php
就在第 263 行之后,所以它看起来像这样:
$options = array_merge($options, $this->_params['stream_context_options']);
$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;
现在一切正常!