diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php index 05ef0bf513962..148a4f6f833ec 100644 --- a/lib/private/Mail/Mailer.php +++ b/lib/private/Mail/Mailer.php @@ -293,8 +293,8 @@ protected function getSmtpInstance(): EsmtpTransport { // either null or true - if nothing is passed, let the symfony mailer figure out the configuration by itself $mailSmtpsecure = ($this->config->getSystemValue('mail_smtpsecure', null) === 'ssl') ? true : null; $transport = new EsmtpTransport( - $this->config->getSystemValue('mail_smtphost', '127.0.0.1'), - (int)$this->config->getSystemValue('mail_smtpport', 25), + $this->config->getSystemValueString('mail_smtphost', '127.0.0.1'), + $this->config->getSystemValueInt('mail_smtpport', 25), $mailSmtpsecure, null, $this->logger @@ -302,11 +302,11 @@ protected function getSmtpInstance(): EsmtpTransport { /** @var SocketStream $stream */ $stream = $transport->getStream(); /** @psalm-suppress InternalMethod */ - $stream->setTimeout($this->config->getSystemValue('mail_smtptimeout', 10)); + $stream->setTimeout($this->config->getSystemValueInt('mail_smtptimeout', 10)); - if ($this->config->getSystemValue('mail_smtpauth', false)) { - $transport->setUsername($this->config->getSystemValue('mail_smtpname', '')); - $transport->setPassword($this->config->getSystemValue('mail_smtppassword', '')); + if ($this->config->getSystemValueBool('mail_smtpauth', false)) { + $transport->setUsername($this->config->getSystemValueString('mail_smtpname', '')); + $transport->setPassword($this->config->getSystemValueString('mail_smtppassword', '')); } $streamingOptions = $this->config->getSystemValue('mail_smtpstreamoptions', []); diff --git a/tests/lib/Mail/MailerTest.php b/tests/lib/Mail/MailerTest.php index 39e4d689a3709..a93086a201fdd 100644 --- a/tests/lib/Mail/MailerTest.php +++ b/tests/lib/Mail/MailerTest.php @@ -239,9 +239,16 @@ public function testCreateEMailTemplate() { public function testStreamingOptions() { $this->config->method('getSystemValue') ->willReturnMap([ - ['mail_smtpmode', 'smtp', 'smtp'], ['mail_smtpstreamoptions', [], ['foo' => 1]], + ]); + $this->config->method('getSystemValueString') + ->willReturnMap([ + ['mail_smtpmode', 'smtp', 'smtp'], + ['overwrite.cli.url', '', ''], ['mail_smtphost', '127.0.0.1', '127.0.0.1'], + ]); + $this->config->method('getSystemValueInt') + ->willReturnMap([ ['mail_smtpport', 25, 25], ['mail_smtptimeout', 10, 10], ]); @@ -256,12 +263,20 @@ public function testStreamingOptions() { public function testStreamingOptionsWrongType() { $this->config->method('getSystemValue') ->willReturnMap([ - ['mail_smtpmode', 'smtp', 'smtp'], ['mail_smtpstreamoptions', [], 'bar'], + ]); + $this->config->method('getSystemValueString') + ->willReturnMap([ + ['mail_smtpmode', 'smtp', 'smtp'], + ['overwrite.cli.url', '', ''], ['mail_smtphost', '127.0.0.1', '127.0.0.1'], + ]); + $this->config->method('getSystemValueInt') + ->willReturnMap([ ['mail_smtpport', 25, 25], ['mail_smtptimeout', 10, 10], ]); + $mailer = self::invokePrivate($this->mailer, 'getInstance'); /** @var EsmtpTransport $transport */ $transport = self::invokePrivate($mailer, 'transport'); @@ -270,16 +285,17 @@ public function testStreamingOptionsWrongType() { } public function testLocalDomain(): void { - $this->config->method('getSystemValue') + $this->config->method('getSystemValueString') ->willReturnMap([ ['mail_smtpmode', 'smtp', 'smtp'], + ['overwrite.cli.url', '', 'https://some.valid.url.com:8080'], ['mail_smtphost', '127.0.0.1', '127.0.0.1'], + ]); + $this->config->method('getSystemValueInt') + ->willReturnMap([ ['mail_smtpport', 25, 25], ['mail_smtptimeout', 10, 10], ]); - $this->config->method('getSystemValueString') - ->with('overwrite.cli.url', '') - ->willReturn('https://some.valid.url.com:8080'); /** @var SymfonyMailer $mailer */ $mailer = self::invokePrivate($this->mailer, 'getInstance'); @@ -292,16 +308,17 @@ public function testLocalDomain(): void { } public function testLocalDomainInvalidUrl(): void { - $this->config->method('getSystemValue') + $this->config->method('getSystemValueString') ->willReturnMap([ ['mail_smtpmode', 'smtp', 'smtp'], + ['overwrite.cli.url', '', 'https:only.slash.does.not.work:8080'], ['mail_smtphost', '127.0.0.1', '127.0.0.1'], + ]); + $this->config->method('getSystemValueInt') + ->willReturnMap([ ['mail_smtpport', 25, 25], ['mail_smtptimeout', 10, 10], ]); - $this->config->method('getSystemValueString') - ->with('overwrite.cli.url', '') - ->willReturn('https:only.slash.does.not.work:8080'); /** @var SymfonyMailer $mailer */ $mailer = self::invokePrivate($this->mailer, 'getInstance');