我需要禁用ssl证书的验证以用于开发目的,但我在官方文档中没有找到任何相关信息。 http://swiftmailer.org/docs/introduction.html
我正在使用php 5.6和Symfony2(v2.7)。
SwiftMailerBundle的配置参考是:
swiftmailer:
transport: smtp
username: ~
password: ~
host: localhost
port: false
encryption: ~
auth_mode: ~
spool:
type: file
path: '%kernel.cache_dir%/swiftmailer/spool'
sender_address: ~
antiflood:
threshold: 99
sleep: 0
delivery_address: ~
disable_delivery: ~
logging: '%kernel.debug%'
答案 0 :(得分:15)
我发现了一个没有记录的功能
symfony 2.8,php 5.6,swiftmailer-bundle 2.5.3
swiftmailer:
stream_options:
ssl:
verify_peer: false
verify_peer_name: false
答案 1 :(得分:3)
我认为这是一个肮脏的黑客,但它对我很好;)
$https['ssl']['verify_peer'] = FALSE;
$https['ssl']['verify_peer_name'] = FALSE; // seems to work fine without this line so far
/** @var \Swift_Transport_EsmtpTransport $transport */
$transport = $this->get('swiftmailer.mailer.default.transport');
$transport->setStreamOptions($https);
答案 2 :(得分:3)
Maxim建议的配置选项对我不起作用(Symfony 3.4和Swift Mailer 5.4)
我能找到的最干净的解决方案如下:
$transport = $mailer->getTransport();
if($transport instanceof \Swift_Transport_EsmtpTransport){
$transport->setStreamOptions([
'ssl' => ['allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false]
]);
}
其中$mailer
是您在某些服务或控制器中使用的SwiftMailer实例
答案 3 :(得分:1)
从Symfony获取swiftmailer.mailer.default.transport
并设置以下配置对我有用:
$transport = $this->get("swiftmailer.mailer.default.transport");
// disable SSL certificate validation
$transport->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false)));
我认为不可能在.yml文件中设置流选项。