fixed sender/recipients in SMTP Envelope

This commit is contained in:
Fabien Potencier 2019-06-11 11:52:08 +02:00
parent cf728f5da2
commit 7a2f9bf134
2 changed files with 11 additions and 10 deletions

View File

@ -47,7 +47,7 @@ final class DelayedSmtpEnvelope extends SmtpEnvelope
return parent::getSender(); return parent::getSender();
} }
return self::getSenderFromHeaders($this->message->getHeaders()); return new Address(self::getSenderFromHeaders($this->message->getHeaders())->getAddress());
} }
public function setRecipients(array $recipients): void public function setRecipients(array $recipients): void
@ -74,7 +74,9 @@ final class DelayedSmtpEnvelope extends SmtpEnvelope
$recipients = []; $recipients = [];
foreach (['to', 'cc', 'bcc'] as $name) { foreach (['to', 'cc', 'bcc'] as $name) {
foreach ($headers->getAll($name) as $header) { foreach ($headers->getAll($name) as $header) {
$recipients = array_merge($recipients, $header->getAddresses()); foreach ($header->getAddresses() as $address) {
$recipients[] = new Address($address->getAddress());
}
} }
} }

View File

@ -17,7 +17,6 @@ use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Header\Headers; use Symfony\Component\Mime\Header\Headers;
use Symfony\Component\Mime\Message; use Symfony\Component\Mime\Message;
use Symfony\Component\Mime\NamedAddress; use Symfony\Component\Mime\NamedAddress;
use Symfony\Component\Mime\RawMessage;
class SmtpEnvelopeTest extends TestCase class SmtpEnvelopeTest extends TestCase
{ {
@ -54,19 +53,19 @@ class SmtpEnvelopeTest extends TestCase
public function testSenderFromHeaders() public function testSenderFromHeaders()
{ {
$headers = new Headers(); $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']); $headers->addMailboxListHeader('To', ['from@symfony.com']);
$e = SmtpEnvelope::create(new Message($headers)); $e = SmtpEnvelope::create(new Message($headers));
$this->assertEquals('return@symfony.com', $e->getSender()->getAddress()); $this->assertEquals('return@symfony.com', $e->getSender()->getAddress());
$headers = new Headers(); $headers = new Headers();
$headers->addMailboxHeader('Sender', 'sender@symfony.com'); $headers->addMailboxHeader('Sender', new NamedAddress('sender@symfony.com', 'sender'));
$headers->addMailboxListHeader('To', ['from@symfony.com']); $headers->addMailboxListHeader('To', ['from@symfony.com']);
$e = SmtpEnvelope::create(new Message($headers)); $e = SmtpEnvelope::create(new Message($headers));
$this->assertEquals('sender@symfony.com', $e->getSender()->getAddress()); $this->assertEquals('sender@symfony.com', $e->getSender()->getAddress());
$headers = new Headers(); $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']); $headers->addMailboxListHeader('To', ['from@symfony.com']);
$e = SmtpEnvelope::create(new Message($headers)); $e = SmtpEnvelope::create(new Message($headers));
$this->assertEquals('from@symfony.com', $e->getSender()->getAddress()); $this->assertEquals('from@symfony.com', $e->getSender()->getAddress());
@ -77,7 +76,7 @@ class SmtpEnvelopeTest extends TestCase
$headers = new Headers(); $headers = new Headers();
$headers->addMailboxListHeader('To', ['from@symfony.com']); $headers->addMailboxListHeader('To', ['from@symfony.com']);
$e = SmtpEnvelope::create($message = new Message($headers)); $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()); $this->assertEquals('from@symfony.com', $e->getSender()->getAddress());
} }
@ -85,9 +84,9 @@ class SmtpEnvelopeTest extends TestCase
{ {
$headers = new Headers(); $headers = new Headers();
$headers->addPathHeader('Return-Path', 'return@symfony.com'); $headers->addPathHeader('Return-Path', 'return@symfony.com');
$headers->addMailboxListHeader('To', ['to@symfony.com']); $headers->addMailboxListHeader('To', [new NamedAddress('to@symfony.com', 'to')]);
$headers->addMailboxListHeader('Cc', ['cc@symfony.com']); $headers->addMailboxListHeader('Cc', [new NamedAddress('cc@symfony.com', 'cc')]);
$headers->addMailboxListHeader('Bcc', ['bcc@symfony.com']); $headers->addMailboxListHeader('Bcc', [new NamedAddress('bcc@symfony.com', 'bcc')]);
$e = SmtpEnvelope::create(new Message($headers)); $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()); $this->assertEquals([new Address('to@symfony.com'), new Address('cc@symfony.com'), new Address('bcc@symfony.com')], $e->getRecipients());
} }