From e44e04e17746b906544a063aca62efe44adf95c0 Mon Sep 17 00:00:00 2001 From: Patrick Kuijvenhoven Date: Fri, 11 Oct 2024 09:25:27 +0200 Subject: [PATCH] fix: support SmsMessage with 'from' set Fixes `Error Email does not comply with addr-spec of RFC 2822` See: #58535 --- .../Bridge/FakeSms/FakeSmsEmailTransport.php | 6 ++--- .../Bridge/FakeSms/FakeSmsLoggerTransport.php | 4 +-- .../Tests/FakeSmsEmailTransportTest.php | 27 +++++++++++++++++-- .../Tests/FakeSmsLoggerTransportTest.php | 2 +- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsEmailTransport.php b/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsEmailTransport.php index e83e57a006011..92f0044bc38a0 100644 --- a/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsEmailTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsEmailTransport.php @@ -60,14 +60,14 @@ public function supports(MessageInterface $message): bool */ protected function doSend(MessageInterface $message): SentMessage { - if (!$this->supports($message)) { + if (!$message instanceof SmsMessage) { throw new UnsupportedMessageTypeException(__CLASS__, SmsMessage::class, $message); } $email = (new Email()) - ->from($message->getFrom() ?: $this->from) + ->from($this->from) ->to($this->to) - ->subject(sprintf('New SMS on phone number: %s', $message->getPhone())) + ->subject('New SMS to phone number ' . $message->getPhone() . ($message->getFrom() ? ' from ' . $message->getFrom() : '')) ->html($message->getSubject()) ->text($message->getSubject()); diff --git a/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsLoggerTransport.php b/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsLoggerTransport.php index 3747c66ee7012..2a3a9fbf89130 100644 --- a/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsLoggerTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsLoggerTransport.php @@ -51,11 +51,11 @@ public function supports(MessageInterface $message): bool */ protected function doSend(MessageInterface $message): SentMessage { - if (!$this->supports($message)) { + if (!$message instanceof SmsMessage) { throw new UnsupportedMessageTypeException(__CLASS__, SmsMessage::class, $message); } - $this->logger->info(sprintf('New SMS on phone number: %s', $message->getPhone())); + $this->logger->info('New SMS to phone number ' . $message->getPhone() . ($message->getFrom() ? ' from ' . $message->getFrom() : '')); return new SentMessage($message, (string) $this); } diff --git a/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsEmailTransportTest.php b/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsEmailTransportTest.php index de3af39c95219..8ef3edc7d031d 100644 --- a/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsEmailTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsEmailTransportTest.php @@ -70,7 +70,30 @@ public function testSendWithDefaultTransport() $this->assertInstanceOf(Email::class, $sentEmail); $this->assertSame($to, $sentEmail->getTo()[0]->getEncodedAddress()); $this->assertSame($from, $sentEmail->getFrom()[0]->getEncodedAddress()); - $this->assertSame(sprintf('New SMS on phone number: %s', $phone), $sentEmail->getSubject()); + $this->assertSame(\sprintf('New SMS to phone number %s', $phone), $sentEmail->getSubject()); + $this->assertSame($subject, $sentEmail->getTextBody()); + $this->assertFalse($sentEmail->getHeaders()->has('X-Transport')); + } + + public function testSendWithFrom() + { + $transportName = null; + + $message = new SmsMessage($phone = '0611223344', $subject = 'Hello!', $fromPhone = '0655667788'); + + $mailer = new DummyMailer(); + + $transport = (new FakeSmsEmailTransport($mailer, $to = 'recipient@email.net', $from = 'sender@email.net')); + $transport->setHost($transportName); + + $transport->send($message); + + /** @var Email $sentEmail */ + $sentEmail = $mailer->getSentEmail(); + $this->assertInstanceOf(Email::class, $sentEmail); + $this->assertSame($to, $sentEmail->getTo()[0]->getEncodedAddress()); + $this->assertSame($from, $sentEmail->getFrom()[0]->getEncodedAddress()); + $this->assertSame(\sprintf('New SMS to phone number %s from %s', $phone, $fromPhone), $sentEmail->getSubject()); $this->assertSame($subject, $sentEmail->getTextBody()); $this->assertFalse($sentEmail->getHeaders()->has('X-Transport')); } @@ -93,7 +116,7 @@ public function testSendWithCustomTransport() $this->assertInstanceOf(Email::class, $sentEmail); $this->assertSame($to, $sentEmail->getTo()[0]->getEncodedAddress()); $this->assertSame($from, $sentEmail->getFrom()[0]->getEncodedAddress()); - $this->assertSame(sprintf('New SMS on phone number: %s', $phone), $sentEmail->getSubject()); + $this->assertSame(\sprintf('New SMS to phone number %s', $phone), $sentEmail->getSubject()); $this->assertSame($subject, $sentEmail->getTextBody()); $this->assertTrue($sentEmail->getHeaders()->has('X-Transport')); $this->assertSame($transportName, $sentEmail->getHeaders()->get('X-Transport')->getBody()); diff --git a/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsLoggerTransportTest.php b/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsLoggerTransportTest.php index 4c8ac00ebdc71..c58c7a185a59c 100644 --- a/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsLoggerTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsLoggerTransportTest.php @@ -61,7 +61,7 @@ public function testSendWithDefaultTransport() $this->assertNotEmpty($logs); $log = $logs[0]; - $this->assertSame(sprintf('New SMS on phone number: %s', $phone), $log['message']); + $this->assertSame(\sprintf('New SMS to phone number %s', $phone), $log['message']); $this->assertSame('info', $log['level']); } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy