diff --git a/vendor/magento/module-email/Model/Transport.php b/vendor/magento/module-email/Model/Transport.php
index b46e4564e327f..02631e9564c2a 100644
--- a/vendor/magento/module-email/Model/Transport.php
+++ b/vendor/magento/module-email/Model/Transport.php
@@ -16,6 +16,7 @@
 use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport;
 use Symfony\Component\Mailer\Transport\Smtp\Auth\LoginAuthenticator;
 use Symfony\Component\Mailer\Transport\Smtp\Auth\PlainAuthenticator;
+use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransportFactory;
 use Magento\Framework\App\Config\ScopeConfigInterface;
 use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Exception\MailException;
@@ -78,6 +79,11 @@ class Transport implements TransportInterface
      */
     private const XML_PATH_SSL = 'system/smtp/ssl';
 
+    /**
+     * SMTP scheme constant
+     */
+    private const SMTP_SCHEME = 'smtp';
+
     /**
      * Whether return path should be set or no.
      *
@@ -146,7 +152,7 @@ public function __construct(
     public function getTransport(): SymfonyTransportInterface
     {
         if (!isset($this->symfonyTransport)) {
-            $transportType = $this->scopeConfig->getValue(self::XML_PATH_TRANSPORT);
+            $transportType = $this->scopeConfig->getValue(self::XML_PATH_TRANSPORT, ScopeInterface::SCOPE_STORE);
             if ($transportType === 'smtp') {
                 $this->symfonyTransport = $this->createSmtpTransport();
             } else {
@@ -170,19 +176,27 @@ private function createSmtpTransport(): SymfonyTransportInterface
         $password = $this->scopeConfig->getValue(self::XML_PATH_PASSWORD, ScopeInterface::SCOPE_STORE);
         $auth = $this->scopeConfig->getValue(self::XML_PATH_AUTH, ScopeInterface::SCOPE_STORE);
         $ssl = $this->scopeConfig->getValue(self::XML_PATH_SSL, ScopeInterface::SCOPE_STORE);
-        $tls = false;
 
+        $options = [];
         if ($ssl === 'tls') {
-            $tls = true;
+            $options['tls'] = true;
+        } elseif ($ssl === 'ssl') {
+            $options['ssl'] = true;
+            $options['verify_peer'] = true;
+            $options['verify_peer_name'] = true;
         }
 
-        $transport = new EsmtpTransport($host, $port, $tls);
-        if ($username) {
-            $transport->setUsername($username);
-        }
-        if ($password) {
-            $transport->setPassword($password);
-        }
+        $dsn = new Dsn(
+            self::SMTP_SCHEME,
+            $host,
+            $username,
+            $password,
+            $port,
+            $options
+        );
+
+        $factory = new EsmtpTransportFactory();
+        $transport = $factory->create($dsn);
 
         switch ($auth) {
             case 'plain':
