From 7a2f9bf134fae35bda7451d24f9056cc26fdbd9e Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 11 Jun 2019 11:52:08 +0200 Subject: [PATCH] fixed sender/recipients in SMTP Envelope --- .../Component/Mailer/DelayedSmtpEnvelope.php | 6 ++++-- .../Component/Mailer/Tests/SmtpEnvelopeTest.php | 15 +++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php b/src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php index ef677d7de8..479fc5be42 100644 --- a/src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php +++ b/src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php @@ -47,7 +47,7 @@ final class DelayedSmtpEnvelope extends SmtpEnvelope return parent::getSender(); } - return self::getSenderFromHeaders($this->message->getHeaders()); + return new Address(self::getSenderFromHeaders($this->message->getHeaders())->getAddress()); } public function setRecipients(array $recipients): void @@ -74,7 +74,9 @@ final class DelayedSmtpEnvelope extends SmtpEnvelope $recipients = []; foreach (['to', 'cc', 'bcc'] as $name) { foreach ($headers->getAll($name) as $header) { - $recipients = array_merge($recipients, $header->getAddresses()); + foreach ($header->getAddresses() as $address) { + $recipients[] = new Address($address->getAddress()); + } } } diff --git a/src/Symfony/Component/Mailer/Tests/SmtpEnvelopeTest.php b/src/Symfony/Component/Mailer/Tests/SmtpEnvelopeTest.php index e64be3100b..7b32ed4d73 100644 --- a/src/Symfony/Component/Mailer/Tests/SmtpEnvelopeTest.php +++ b/src/Symfony/Component/Mailer/Tests/SmtpEnvelopeTest.php @@ -17,7 +17,6 @@ use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Header\Headers; use Symfony\Component\Mime\Message; use Symfony\Component\Mime\NamedAddress; -use Symfony\Component\Mime\RawMessage; class SmtpEnvelopeTest extends TestCase { @@ -54,19 +53,19 @@ class SmtpEnvelopeTest extends TestCase public function testSenderFromHeaders() { $headers = new Headers(); - $headers->addPathHeader('Return-Path', 'return@symfony.com'); + $headers->addPathHeader('Return-Path', new NamedAddress('return@symfony.com', 'return')); $headers->addMailboxListHeader('To', ['from@symfony.com']); $e = SmtpEnvelope::create(new Message($headers)); $this->assertEquals('return@symfony.com', $e->getSender()->getAddress()); $headers = new Headers(); - $headers->addMailboxHeader('Sender', 'sender@symfony.com'); + $headers->addMailboxHeader('Sender', new NamedAddress('sender@symfony.com', 'sender')); $headers->addMailboxListHeader('To', ['from@symfony.com']); $e = SmtpEnvelope::create(new Message($headers)); $this->assertEquals('sender@symfony.com', $e->getSender()->getAddress()); $headers = new Headers(); - $headers->addMailboxListHeader('From', ['from@symfony.com', 'some@symfony.com']); + $headers->addMailboxListHeader('From', [new NamedAddress('from@symfony.com', 'from'), 'some@symfony.com']); $headers->addMailboxListHeader('To', ['from@symfony.com']); $e = SmtpEnvelope::create(new Message($headers)); $this->assertEquals('from@symfony.com', $e->getSender()->getAddress()); @@ -77,7 +76,7 @@ class SmtpEnvelopeTest extends TestCase $headers = new Headers(); $headers->addMailboxListHeader('To', ['from@symfony.com']); $e = SmtpEnvelope::create($message = new Message($headers)); - $message->getHeaders()->addMailboxListHeader('From', ['from@symfony.com']); + $message->getHeaders()->addMailboxListHeader('From', [new NamedAddress('from@symfony.com', 'from')]); $this->assertEquals('from@symfony.com', $e->getSender()->getAddress()); } @@ -85,9 +84,9 @@ class SmtpEnvelopeTest extends TestCase { $headers = new Headers(); $headers->addPathHeader('Return-Path', 'return@symfony.com'); - $headers->addMailboxListHeader('To', ['to@symfony.com']); - $headers->addMailboxListHeader('Cc', ['cc@symfony.com']); - $headers->addMailboxListHeader('Bcc', ['bcc@symfony.com']); + $headers->addMailboxListHeader('To', [new NamedAddress('to@symfony.com', 'to')]); + $headers->addMailboxListHeader('Cc', [new NamedAddress('cc@symfony.com', 'cc')]); + $headers->addMailboxListHeader('Bcc', [new NamedAddress('bcc@symfony.com', 'bcc')]); $e = SmtpEnvelope::create(new Message($headers)); $this->assertEquals([new Address('to@symfony.com'), new Address('cc@symfony.com'), new Address('bcc@symfony.com')], $e->getRecipients()); }