Skip to content

Commit cc6c14f

Browse files
committed
fix: support SmsMessage with 'from' set
Fixes `Error Email does not comply with addr-spec of RFC 2822` See: #58535
1 parent 7b4ec02 commit cc6c14f

File tree

4 files changed

+32
-7
lines changed

4 files changed

+32
-7
lines changed

src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsEmailTransport.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public function supports(MessageInterface $message): bool
5454
}
5555

5656
/**
57-
* @param MessageInterface|SmsMessage $message
57+
* @param MessageInterface $message
5858
*
5959
* @throws TransportExceptionInterface
6060
*/
@@ -64,10 +64,12 @@ protected function doSend(MessageInterface $message): SentMessage
6464
throw new UnsupportedMessageTypeException(__CLASS__, SmsMessage::class, $message);
6565
}
6666

67+
\assert($message instanceof SmsMessage); // to keep psalm happy
68+
6769
$email = (new Email())
68-
->from($message->getFrom() ?: $this->from)
70+
->from($this->from)
6971
->to($this->to)
70-
->subject(sprintf('New SMS on phone number: %s', $message->getPhone()))
72+
->subject('New SMS to phone number ' . $message->getPhone() . ($message->getFrom() ? ' from ' . $message->getFrom() : ''))
7173
->html($message->getSubject())
7274
->text($message->getSubject());
7375

src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsLoggerTransport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ protected function doSend(MessageInterface $message): SentMessage
5555
throw new UnsupportedMessageTypeException(__CLASS__, SmsMessage::class, $message);
5656
}
5757

58-
$this->logger->info(sprintf('New SMS on phone number: %s', $message->getPhone()));
58+
$this->logger->info('New SMS to phone number ' . $message->getPhone() . ($message->getFrom() ? ' from ' . $message->getFrom() : ''));
5959

6060
return new SentMessage($message, (string) $this);
6161
}

src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsEmailTransportTest.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,30 @@ public function testSendWithDefaultTransport()
7070
$this->assertInstanceOf(Email::class, $sentEmail);
7171
$this->assertSame($to, $sentEmail->getTo()[0]->getEncodedAddress());
7272
$this->assertSame($from, $sentEmail->getFrom()[0]->getEncodedAddress());
73-
$this->assertSame(sprintf('New SMS on phone number: %s', $phone), $sentEmail->getSubject());
73+
$this->assertSame(\sprintf('New SMS to phone number %s', $phone), $sentEmail->getSubject());
74+
$this->assertSame($subject, $sentEmail->getTextBody());
75+
$this->assertFalse($sentEmail->getHeaders()->has('X-Transport'));
76+
}
77+
78+
public function testSendWithFrom()
79+
{
80+
$transportName = null;
81+
82+
$message = new SmsMessage($phone = '0611223344', $subject = 'Hello!', $fromPhone = '0655667788');
83+
84+
$mailer = new DummyMailer();
85+
86+
$transport = (new FakeSmsEmailTransport($mailer, $to = 'recipient@email.net', $from = 'sender@email.net'));
87+
$transport->setHost($transportName);
88+
89+
$transport->send($message);
90+
91+
/** @var Email $sentEmail */
92+
$sentEmail = $mailer->getSentEmail();
93+
$this->assertInstanceOf(Email::class, $sentEmail);
94+
$this->assertSame($to, $sentEmail->getTo()[0]->getEncodedAddress());
95+
$this->assertSame($from, $sentEmail->getFrom()[0]->getEncodedAddress());
96+
$this->assertSame(\sprintf('New SMS to phone number %s from %s', $phone, $fromPhone), $sentEmail->getSubject());
7497
$this->assertSame($subject, $sentEmail->getTextBody());
7598
$this->assertFalse($sentEmail->getHeaders()->has('X-Transport'));
7699
}
@@ -93,7 +116,7 @@ public function testSendWithCustomTransport()
93116
$this->assertInstanceOf(Email::class, $sentEmail);
94117
$this->assertSame($to, $sentEmail->getTo()[0]->getEncodedAddress());
95118
$this->assertSame($from, $sentEmail->getFrom()[0]->getEncodedAddress());
96-
$this->assertSame(sprintf('New SMS on phone number: %s', $phone), $sentEmail->getSubject());
119+
$this->assertSame(\sprintf('New SMS to phone number %s', $phone), $sentEmail->getSubject());
97120
$this->assertSame($subject, $sentEmail->getTextBody());
98121
$this->assertTrue($sentEmail->getHeaders()->has('X-Transport'));
99122
$this->assertSame($transportName, $sentEmail->getHeaders()->get('X-Transport')->getBody());

src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsLoggerTransportTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public function testSendWithDefaultTransport()
6161
$this->assertNotEmpty($logs);
6262

6363
$log = $logs[0];
64-
$this->assertSame(sprintf('New SMS on phone number: %s', $phone), $log['message']);
64+
$this->assertSame(\sprintf('New SMS to phone number %s', $phone), $log['message']);
6565
$this->assertSame('info', $log['level']);
6666
}
6767
}

0 commit comments

Comments
 (0)
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