Skip to content

Commit 59a6796

Browse files
committed
[Mailer][Smtp] Make 'auto_tls' work with any port number
1 parent 314f1bb commit 59a6796

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,19 @@ public static function createProvider(): iterable
165165
new Dsn('smtp', 'example.com', '', '', 25, ['auto_tls' => false]),
166166
$transport,
167167
];
168+
yield [
169+
new Dsn('smtp', 'example.com', '', '', 0, ['auto_tls' => false]),
170+
$transport,
171+
];
172+
yield [
173+
Dsn::fromString('smtp://:@example.com?auto_tls=false'),
174+
$transport,
175+
];
168176

177+
$transport = new EsmtpTransport('example.com', 465, false, null, $logger);
178+
$transport->setAutoTls(false);
169179
yield [
170-
Dsn::fromString('smtp://:@example.com:25?auto_tls=false'),
180+
Dsn::fromString('smtp://:@example.com:465?auto_tls=false'),
171181
$transport,
172182
];
173183
}

src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,17 @@ final class EsmtpTransportFactory extends AbstractTransportFactory
2323
{
2424
public function create(Dsn $dsn): TransportInterface
2525
{
26-
$tls = 'smtps' === $dsn->getScheme() ? true : null;
26+
if ('' !== $dsn->getOption('auto_tls')) {
27+
$auto_tls = filter_var($dsn->getOption('auto_tls', true), \FILTER_VALIDATE_BOOL);
28+
} else {
29+
$auto_tls = true;
30+
}
31+
$tls = 'smtps' === $dsn->getScheme() ? true : ($auto_tls ? null : false);
2732
$port = $dsn->getPort(0);
2833
$host = $dsn->getHost();
2934

3035
$transport = new EsmtpTransport($host, $port, $tls, $this->dispatcher, $this->logger);
36+
$transport->setAutoTls($auto_tls);
3137

3238
/** @var SocketStream $stream */
3339
$stream = $transport->getStream();
@@ -68,10 +74,6 @@ public function create(Dsn $dsn): TransportInterface
6874
$transport->setPingThreshold((int) $pingThreshold);
6975
}
7076

71-
if ('' !== $dsn->getOption('auto_tls') && !filter_var($dsn->getOption('auto_tls', true), \FILTER_VALIDATE_BOOL)) {
72-
$transport->setAutoTls(false);
73-
}
74-
7577
return $transport;
7678
}
7779

0 commit comments

Comments
 (0)