diff --git a/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesSmtpTransport.php b/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesSmtpTransport.php index 08146ab0d9..2c53200689 100644 --- a/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesSmtpTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesSmtpTransport.php @@ -25,7 +25,7 @@ class SesSmtpTransport extends EsmtpTransport */ public function __construct(string $username, string $password, string $region = null, EventDispatcherInterface $dispatcher = null, LoggerInterface $logger = null) { - parent::__construct(sprintf('email-smtp.%s.amazonaws.com', $region ?: 'eu-west-1'), 587, true, null, $dispatcher, $logger); + parent::__construct(sprintf('email-smtp.%s.amazonaws.com', $region ?: 'eu-west-1'), 587, true, $dispatcher, $logger); $this->setUsername($username); $this->setPassword($password); diff --git a/src/Symfony/Component/Mailer/Bridge/Google/Transport/GmailSmtpTransport.php b/src/Symfony/Component/Mailer/Bridge/Google/Transport/GmailSmtpTransport.php index 371877e535..19402fccf5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Google/Transport/GmailSmtpTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Google/Transport/GmailSmtpTransport.php @@ -22,7 +22,7 @@ class GmailSmtpTransport extends EsmtpTransport { public function __construct(string $username, string $password, EventDispatcherInterface $dispatcher = null, LoggerInterface $logger = null) { - parent::__construct('smtp.gmail.com', 465, true, null, $dispatcher, $logger); + parent::__construct('smtp.gmail.com', 465, true, $dispatcher, $logger); $this->setUsername($username); $this->setPassword($password); diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillSmtpTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillSmtpTransport.php index bdcb4f055c..72d2e8a51a 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillSmtpTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillSmtpTransport.php @@ -22,7 +22,7 @@ class MandrillSmtpTransport extends EsmtpTransport { public function __construct(string $username, string $password, EventDispatcherInterface $dispatcher = null, LoggerInterface $logger = null) { - parent::__construct('smtp.mandrillapp.com', 587, true, null, $dispatcher, $logger); + parent::__construct('smtp.mandrillapp.com', 587, true, $dispatcher, $logger); $this->setUsername($username); $this->setPassword($password); diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunSmtpTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunSmtpTransport.php index b2e15b594b..824cd48b03 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunSmtpTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunSmtpTransport.php @@ -22,7 +22,7 @@ class MailgunSmtpTransport extends EsmtpTransport { public function __construct(string $username, string $password, string $region = null, EventDispatcherInterface $dispatcher = null, LoggerInterface $logger = null) { - parent::__construct('us' !== ($region ?: 'us') ? sprintf('smtp.%s.mailgun.org', $region) : 'smtp.mailgun.org', 465, true, null, $dispatcher, $logger); + parent::__construct('us' !== ($region ?: 'us') ? sprintf('smtp.%s.mailgun.org', $region) : 'smtp.mailgun.org', 465, true, $dispatcher, $logger); $this->setUsername($username); $this->setPassword($password); diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkSmtpTransport.php b/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkSmtpTransport.php index f9f32ed7e4..395b638c56 100644 --- a/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkSmtpTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkSmtpTransport.php @@ -22,7 +22,7 @@ class PostmarkSmtpTransport extends EsmtpTransport { public function __construct(string $id, EventDispatcherInterface $dispatcher = null, LoggerInterface $logger = null) { - parent::__construct('smtp.postmarkapp.com', 587, true, null, $dispatcher, $logger); + parent::__construct('smtp.postmarkapp.com', 587, true, $dispatcher, $logger); $this->setUsername($id); $this->setPassword($id); diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridSmtpTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridSmtpTransport.php index d61eca3c1c..90d6dc60db 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridSmtpTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridSmtpTransport.php @@ -22,7 +22,7 @@ class SendgridSmtpTransport extends EsmtpTransport { public function __construct(string $key, EventDispatcherInterface $dispatcher = null, LoggerInterface $logger = null) { - parent::__construct('smtp.sendgrid.net', 465, true, null, $dispatcher, $logger); + parent::__construct('smtp.sendgrid.net', 465, true, $dispatcher, $logger); $this->setUsername('apikey'); $this->setPassword($key); diff --git a/src/Symfony/Component/Mailer/CHANGELOG.md b/src/Symfony/Component/Mailer/CHANGELOG.md index fc642f576d..b033405850 100644 --- a/src/Symfony/Component/Mailer/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/CHANGELOG.md @@ -4,6 +4,7 @@ CHANGELOG 4.4.0 ----- + * [BC BREAK] removed the `auth_mode` DSN option (it is now always determined automatically) * STARTTLS cannot be enabled anymore (it is used automatically if TLS is disabled and the server supports STARTTLS) * [BC BREAK] Removed the `encryption` DSN option (use `smtps` instead) * Added support for the `smtps` protocol (does the same as using `smtp` and port `465`) diff --git a/src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php b/src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php index c64854239c..a3b13b624c 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php @@ -38,30 +38,30 @@ class EsmtpTransportFactoryTest extends TransportFactoryTestCase $eventDispatcher = $this->getDispatcher(); $logger = $this->getLogger(); - $transport = new EsmtpTransport('localhost', 25, false, null, $eventDispatcher, $logger); + $transport = new EsmtpTransport('localhost', 25, false, $eventDispatcher, $logger); yield [ new Dsn('smtp', 'localhost'), $transport, ]; - $transport = new EsmtpTransport('example.com', 99, true, 'login', $eventDispatcher, $logger); + $transport = new EsmtpTransport('example.com', 99, true, $eventDispatcher, $logger); $transport->setUsername(self::USER); $transport->setPassword(self::PASSWORD); yield [ - new Dsn('smtps', 'example.com', self::USER, self::PASSWORD, 99, ['auth_mode' => 'login']), + new Dsn('smtps', 'example.com', self::USER, self::PASSWORD, 99), $transport, ]; - $transport = new EsmtpTransport('example.com', 465, true, null, $eventDispatcher, $logger); + $transport = new EsmtpTransport('example.com', 465, true, $eventDispatcher, $logger); yield [ new Dsn('smtps', 'example.com'), $transport, ]; - $transport = new EsmtpTransport('example.com', 465, true, null, $eventDispatcher, $logger); + $transport = new EsmtpTransport('example.com', 465, true, $eventDispatcher, $logger); yield [ new Dsn('smtp', 'example.com', '', '', 465), diff --git a/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransport.php b/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransport.php index ef4d7f71cc..85809e8f64 100644 --- a/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransport.php +++ b/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransport.php @@ -29,12 +29,12 @@ class EsmtpTransport extends SmtpTransport private $authenticators = []; private $username = ''; private $password = ''; - private $authMode; - public function __construct(string $host = 'localhost', int $port = 0, bool $tls = null, string $authMode = null, EventDispatcherInterface $dispatcher = null, LoggerInterface $logger = null) + public function __construct(string $host = 'localhost', int $port = 0, bool $tls = null, EventDispatcherInterface $dispatcher = null, LoggerInterface $logger = null) { parent::__construct(null, $dispatcher, $logger); + // order is important here (roughly most secure and popular first) $this->authenticators = [ new Auth\CramMd5Authenticator(), new Auth\LoginAuthenticator(), @@ -61,9 +61,6 @@ class EsmtpTransport extends SmtpTransport $stream->setHost($host); $stream->setPort($port); - if (null !== $authMode) { - $this->setAuthMode($authMode); - } } public function setUsername(string $username): self @@ -90,18 +87,6 @@ class EsmtpTransport extends SmtpTransport return $this->password; } - public function setAuthMode(string $mode): self - { - $this->authMode = $mode; - - return $this; - } - - public function getAuthMode(): string - { - return $this->authMode; - } - public function addAuthenticator(AuthenticatorInterface $authenticator): void { $this->authenticators[] = $authenticator; @@ -166,7 +151,7 @@ class EsmtpTransport extends SmtpTransport $authNames = []; $errors = []; $modes = array_map('strtolower', $modes); - foreach ($this->getActiveAuthenticators() as $authenticator) { + foreach ($this->authenticators as $authenticator) { if (!\in_array(strtolower($authenticator->getAuthKeyword()), $modes, true)) { continue; } @@ -195,22 +180,4 @@ class EsmtpTransport extends SmtpTransport throw new TransportException($message); } - - /** - * @return AuthenticatorInterface[] - */ - private function getActiveAuthenticators(): array - { - if (!$mode = strtolower($this->authMode)) { - return $this->authenticators; - } - - foreach ($this->authenticators as $authenticator) { - if (strtolower($authenticator->getAuthKeyword()) === $mode) { - return [$authenticator]; - } - } - - throw new TransportException(sprintf('Auth mode "%s" is invalid.', $mode)); - } } diff --git a/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php b/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php index 377a36e3ef..a1438f91f4 100644 --- a/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php +++ b/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php @@ -23,11 +23,10 @@ final class EsmtpTransportFactory extends AbstractTransportFactory public function create(Dsn $dsn): TransportInterface { $tls = 'smtps' === $dsn->getScheme() ? true : null; - $authMode = $dsn->getOption('auth_mode'); $port = $dsn->getPort(0); $host = $dsn->getHost(); - $transport = new EsmtpTransport($host, $port, $tls, $authMode, $this->dispatcher, $this->logger); + $transport = new EsmtpTransport($host, $port, $tls, $this->dispatcher, $this->logger); if ($user = $dsn->getUser()) { $transport->setUsername($user);