SwiftMailer - PHP - How to disable ssl certificate validation
Solution 1
I found an undocumented feature
symfony 2.8, php 5.6, swiftmailer-bundle 2.5.3
Swiftmailer Configuration
swiftmailer:
stream_options:
ssl:
verify_peer: false
verify_peer_name: false
Solution 2
The configuration option suggested by Maxim didn't work for me (Symfony 3.4 and Swift Mailer 5.4)
The cleanest solution I could find is the following:
$transport = $mailer->getTransport();
if($transport instanceof \Swift_Transport_EsmtpTransport){
$transport->setStreamOptions([
'ssl' => ['allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false]
]);
}
where $mailer
is your SwiftMailer instance which you use in some service or controller
Solution 3
I think this is a dirty hack but it works for me fine ;)
$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);
Solution 4
Getting the swiftmailer.mailer.default.transport
from Symfony and setting following configuration works for me:
$transport = $this->get("swiftmailer.mailer.default.transport");
// disable SSL certificate validation
$transport->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false)));
I don't think that it is possible to set the stream options in the .yml file.
Angelo Giuffredi
Updated on June 14, 2022Comments
-
Angelo Giuffredi almost 2 years
I need to disable the validation of ssl certificate for developing purpose but i don't find anything about this in official documentation. http://swiftmailer.org/docs/introduction.html
I'm using php 5.6 and Symfony2 (v2.7).
The configuration reference of SwiftMailerBundle is:
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%'
-
Fuujin over 6 yearsAlso works with Symfony 3.3, Swiftmailer-bundle 3.1.6 and php 7.1
-
alexeevyci over 6 yearsUnrecognized option "stream_options" under "swiftmailer" with Symfony 3.3, Swiftmailer-bundle 3.1.6 and php 7.1
-
vahanpwns almost 6 yearsConfirmed working on Symfony 4.0.10! I had been struggling with this for nearly two hours D: I suspect my SMTP server SSL certificate isn't set up correctly, but at least I can continue development now :D
-
Atan almost 6 yearsIf you are using multiple mailers, stream_options must be placed under the appropriate mailer key (like any other options)