SwiftMailer - PHP - 如何禁用ssl证书验证

Ang*_*edi 7 php ssl ssl-certificate swiftmailer symfony

我需要禁用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%'
Run Code Online (Sandbox Code Playgroud)

Max*_*nov 17

我发现了一个没有文档的功能

symfony 2.8,php 5.6,swiftmailer-bundle 2.5.3

Swiftmailer配置

swiftmailer:
   stream_options:
    ssl:
        verify_peer: false
        verify_peer_name: false
Run Code Online (Sandbox Code Playgroud)

  • 也适用于Symfony 3.3,Swiftmailer-bundle 3.1.6和php 7.1 (2认同)
  • Symfony 3.3、Swiftmailer-bundle 3.1.6 和 php 7.1 在“swiftmailer”下无法识别的选项“stream_options” (2认同)

Ata*_*tan 6

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]
    ]);
}
Run Code Online (Sandbox Code Playgroud)

$mailer您在某些服务或控制器中使用的 SwiftMailer 实例在哪里


小智 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);
Run Code Online (Sandbox Code Playgroud)