【问题标题】:How do you disable SSL certificate validation when spooling emails with swiftMailer使用 swiftMailer 假脱机电子邮件时如何禁用 SSL 证书验证
【发布时间】:2018-07-09 08:43:48
【问题描述】:

这是来自this的后续问题

在 PHP 5.6 中,'verify_peer''verify_peer_name' 默认设置为 true,这导致我的 gmail 连接出现问题。

实施了一个修复here,它允许您setStreamOptionsEsmtpTransport 允许您禁用这些检查。这很好,但是我在 symfony 上假脱机电子邮件,假脱机时使用的传输器是 SpoolTransport,它不允许您 setStreamOptions

我可以通过修改函数来禁用 SSL 检查 StreamBuffer.php 中的“_establishSocketConnection”并添加这些 stream_socket_client 命令之前的行:

$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;

但是,这是一个肮脏的修复,涉及更改供应商代码。

是否有任何其他选项可以在假脱机时禁用这些检查?我的 swifmailer 配置如下供参考

# Swiftmailer Configuration
swiftmailer:
    transport:  smtp
    host:       smtp.gmail.com
    username:   XXX
    password:   XXX
    port:       465
    encryption: ssl
    spool:
        type: file
        path: '%kernel.root_dir%/spool'

【问题讨论】:

  • 你在哪里做假脱机?不在同一台机器上?
  • 在同一台机器上@Edwin

标签: php symfony swiftmailer php-5.6 symfony-2.7


【解决方案1】:

获取传输对象并调用它:

$transport->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false)));

在 Symfony 中,可能是这样的: $transport = $this->get("swiftmailer.mailer.default.transport");

【讨论】:

  • 假脱机时的传输器对象是 Swift_Transport_SpoolTransport 并且没有 setStreamOptions 方法:(
  • 啊,我说的实际类是 Swift_SmtpTransport
  • 是的,但不幸的是,我无法使用那个运输工具进行假脱机
猜你喜欢
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 2018-11-04
  • 2018-08-07
  • 1970-01-01
  • 2011-03-01
相关资源
最近更新 更多