无法通过自定义Node SMTP服务器发邮件,SSL验证失败如何绕过?
解决Symfony 4.4绕过本地Node SMTP服务器SSL验证的问题
核心问题是你的Symfony Mailer默认尝试使用加密连接,但Node SMTP服务器未配置TLS/SSL,触发了证书验证失败。以下是可行的解决方法:
方法1:在DSN中明确指定不使用加密并关闭验证
修改config/packages/dev/mailer.yaml的DSN,添加加密方式与验证关闭参数:
dsn: 'smtp://mydemo:mysuperpassword@host.docker.internal:2525?encryption=none&verify_peer=false&verify_peer_name=false'
encryption=none:强制Symfony跳过SSL/TLS加密流程,从根源避免验证逻辑触发verify_peer=false+verify_peer_name=false:双重关闭证书相关验证,覆盖残留的默认校验规则
方法2:通过stream_options强制关闭SSL验证
如果DSN参数无效,直接在Mailer配置中添加stream上下文选项,彻底禁用SSL验证:
framework: mailer: dsn: 'smtp://mydemo:mysuperpassword@host.docker.internal:2525' stream_options: ssl: verify_peer: false verify_peer_name: false allow_self_signed: true
该配置直接作用于PHP的stream底层,完全关闭所有SSL证书验证环节,适合本地开发场景使用。
额外检查
确认你的Node SMTP服务器没有强制要求TLS连接,比如检查服务器代码中是否存在requireTLS: true或强制启用STARTTLS的配置。若服务器强制要求加密,即使Symfony关闭验证也会报错,此时需修改Node服务器配置,允许非加密连接。
内容的提问来源于stack exchange,提问作者Zeth
相关产品推荐
相关产品推荐

