From 1ca9be77aadc953da08a01f201981aa8c71ff6b3 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 15 Jul 2020 08:24:10 +0200 Subject: [PATCH] [Mime] Keep Sender full address when used by non-SMTP transports --- src/Symfony/Component/Mailer/Envelope.php | 6 +++- .../Component/Mailer/Tests/EnvelopeTest.php | 28 +++++++++---------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/Symfony/Component/Mailer/Envelope.php b/src/Symfony/Component/Mailer/Envelope.php index 266d251609..d37606b1f9 100644 --- a/src/Symfony/Component/Mailer/Envelope.php +++ b/src/Symfony/Component/Mailer/Envelope.php @@ -44,9 +44,13 @@ class Envelope public function setSender(Address $sender): void { - $this->sender = new Address($sender->getAddress()); + $this->sender = $sender; } + /** + * @return Address Returns a "mailbox" as specified by RFC 2822 + * Must be converted to an "addr-spec" when used as a "MAIL FROM" value in SMTP (use getAddress()) + */ public function getSender(): Address { return $this->sender; diff --git a/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php b/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php index 33e2fdb09a..bfd72f05b5 100644 --- a/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php +++ b/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php @@ -29,8 +29,8 @@ class EnvelopeTest extends TestCase public function testConstructorWithNamedAddressSender() { - $e = new Envelope(new Address('fabien@symfony.com', 'Fabien'), [new Address('thomas@symfony.com')]); - $this->assertEquals(new Address('fabien@symfony.com'), $e->getSender()); + $e = new Envelope($sender = new Address('fabien@symfony.com', 'Fabien'), [new Address('thomas@symfony.com')]); + $this->assertEquals($sender, $e->getSender()); } public function testConstructorWithAddressRecipients() @@ -54,31 +54,31 @@ class EnvelopeTest extends TestCase public function testSenderFromHeaders() { $headers = new Headers(); - $headers->addPathHeader('Return-Path', new Address('return@symfony.com', 'return')); - $headers->addMailboxListHeader('To', ['from@symfony.com']); + $headers->addPathHeader('Return-Path', $return = new Address('return@symfony.com', 'return')); + $headers->addMailboxListHeader('To', ['to@symfony.com']); $e = Envelope::create(new Message($headers)); - $this->assertEquals(new Address('return@symfony.com', 'return'), $e->getSender()); + $this->assertEquals($return, $e->getSender()); $headers = new Headers(); - $headers->addMailboxHeader('Sender', new Address('sender@symfony.com', 'sender')); - $headers->addMailboxListHeader('To', ['from@symfony.com']); + $headers->addMailboxHeader('Sender', $sender = new Address('sender@symfony.com', 'sender')); + $headers->addMailboxListHeader('To', ['to@symfony.com']); $e = Envelope::create(new Message($headers)); - $this->assertEquals(new Address('sender@symfony.com', 'sender'), $e->getSender()); + $this->assertEquals($sender, $e->getSender()); $headers = new Headers(); - $headers->addMailboxListHeader('From', [new Address('from@symfony.com', 'from'), 'some@symfony.com']); - $headers->addMailboxListHeader('To', ['from@symfony.com']); + $headers->addMailboxListHeader('From', [$from = new Address('from@symfony.com', 'from'), 'some@symfony.com']); + $headers->addMailboxListHeader('To', ['to@symfony.com']); $e = Envelope::create(new Message($headers)); - $this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender()); + $this->assertEquals($from, $e->getSender()); } public function testSenderFromHeadersWithoutFrom() { $headers = new Headers(); - $headers->addMailboxListHeader('To', ['from@symfony.com']); + $headers->addMailboxListHeader('To', ['to@symfony.com']); $e = Envelope::create($message = new Message($headers)); - $message->getHeaders()->addMailboxListHeader('From', [new Address('from@symfony.com', 'from')]); - $this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender()); + $message->getHeaders()->addMailboxListHeader('From', [$from = new Address('from@symfony.com', 'from')]); + $this->assertEquals($from, $e->getSender()); } public function testRecipientsFromHeaders()