10000 bug #33387 [Mailer] maintain sender/recipient name in SMTP envelopes … · symfony/symfony@828e5a4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 828e5a4

Browse files
committed
bug #33387 [Mailer] maintain sender/recipient name in SMTP envelopes (xabbuh)
This PR was merged into the 4.3 branch. Discussion ---------- [Mailer] maintain sender/recipient name in SMTP envelopes | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #33383 | License | MIT | Doc PR | Commits ------- 46ed0e8 maintain sender/recipient name in SMTP envelopes
2 parents 9407c6b + 46ed0e8 commit 828e5a4

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public function getSender(): Address
4747
return parent::getSender();
4848
}
4949

50-
return new Address(self::getSenderFromHeaders($this->message->getHeaders())->getAddress());
50+
return self::getSenderFromHeaders($this->message->getHeaders());
5151
}
5252

5353
public function setRecipients(array $recipients): void
@@ -75,7 +75,7 @@ private static function getRecipientsFromHeaders(Headers $headers): array
7575
foreach (['to', 'cc', 'bcc'] as $name) {
7676
foreach ($headers->all($name) as $header) {
7777
foreach ($header->getAddresses() as $address) {
78-
$recipients[] = new Address($address->getAddress());
78+
$recipients[] = $address;
7979
}
8080
}
8181
}

src/Symfony/Component/Mailer/Tests/SmtpEnvelopeTest.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,19 @@ public function testSenderFromHeaders()
5656
$headers->addPathHeader('Return-Path', new NamedAddress('return@symfony.com', 'return'));
5757
$headers->addMailboxListHeader('To', ['from@symfony.com']);
5858
$e = SmtpEnvelope::create(new Message($headers));
59-
$this->assertEquals('return@symfony.com', $e->getSender()->getAddress());
59+
$this->assertEquals(new NamedAddress('return@symfony.com', 'return'), $e->getSender());
6060

6161
$headers = new Headers();
6262
$headers->addMailboxHeader('Sender', new NamedAddress('sender@symfony.com', 'sender'));
6363
$headers->addMailboxListHeader('To', ['from@symfony.com']);
6464
$e = SmtpEnvelope::create(new Message($headers));
65-
$this->assertEquals('sender@symfony.com', $e->getSender()->getAddress());
65+
$this->assertEquals(new NamedAddress('sender@symfony.com', 'sender'), $e->getSender());
6666

6767
$headers = new Headers();
6868
$headers->addMailboxListHeader('From', [new NamedAddress('from@symfony.com', 'from'), 'some@symfony.com']);
6969
$headers->addMailboxListHeader('To', ['from@symfony.com']);
7070
$e = SmtpEnvelope::create(new Message($headers));
71-
$this->assertEquals('from@symfony.com', $e->getSender()->getAddress());
71+
$this->assertEquals(new NamedAddress('from@symfony.com', 'from'), $e->getSender());
7272
}
7373

7474
public function testSenderFromHeadersWithoutFrom()
@@ -77,17 +77,28 @@ public function testSenderFromHeadersWithoutFrom()
7777
$headers->addMailboxListHeader('To', ['from@symfony.com']);
7878
$e = SmtpEnvelope::create($message = new Message($headers));
7979
$message->getHeaders()->addMailboxListHeader('From', [new NamedAddress('from@symfony.com', 'from')]);
80-
$this->assertEquals('from@symfony.com', $e->getSender()->getAddress());
80+
$this->assertEquals(new NamedAddress('from@symfony.com', 'from'), $e->getSender());
8181
}
8282

8383
public function testRecipientsFromHeaders()
84+
{
85+
$headers = new Headers();
86+
$headers->addPathHeader('Return-Path', 'return@symfony.com');
87+
$headers->addMailboxListHeader('To', [new Address('to@symfony.com')]);
88+
$headers->addMailboxListHeader('Cc', [new Address('cc@symfony.com')]);
89+
$headers->addMailboxListHeader('Bcc', [new Address('bcc@symfony.com')]);
90+
$e = SmtpEnvelope::create(new Message($headers));
91+
$this->assertEquals([new Address('to@symfony.com'), new Address('cc@symfony.com'), new Address('bcc@symfony.com')], $e->getRecipients());
92+
}
93+
94+
public function testRecipientsFromHeadersWithNames()
8495
{
8596
$headers = new Headers();
8697
$headers->addPathHeader('Return-Path', 'return@symfony.com');
8798
$headers->addMailboxListHeader('To', [new NamedAddress('to@symfony.com', 'to')]);
8899
$headers->addMailboxListHeader('Cc', [new NamedAddress('cc@symfony.com', 'cc')]);
89100
$headers->addMailboxListHeader('Bcc', [new NamedAddress('bcc@symfony.com', 'bcc')]);
90101
$e = SmtpEnvelope::create(new Message($headers));
91-
$this->assertEquals([new Address('to@symfony.com'), new Address('cc@symfony.com'), new Address('bcc@symfony.com')], $e->getRecipients());
102+
$this->assertEquals([new NamedAddress('to@symfony.com', 'to'), new NamedAddress('cc@symfony.com', 'cc'), new NamedAddress('bcc@symfony.com', 'bcc')], $e->getRecipients());
92103
}
93104
}

src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,9 @@ public function executeCommand(string $command, array $codes): string
152152
protected function doSend(SentMessage $message): void
153153
{
154154
$envelope = $message->getEnvelope();
155-
$this->doMailFromCommand($envelope->getSender()->toString());
155+
$this->doMailFromCommand($envelope->getSender()->getAddress());
156156
foreach ($envelope->getRecipients() as $recipient) {
157-
$this->doRcptToCommand($recipient->toString());
157+
$this->doRcptToCommand($recipient->getAddress());
158158
}
159159

160160
$this->executeCommand("DATA\r\n", [354]);
@@ -170,12 +170,12 @@ protected function doHeloCommand(): void
170170
$this->executeCommand(sprintf("HELO %s\r\n", $this->domain), [250]);
171171
}
172172

173-
private function doMailFromCommand($address): void
173+
private function doMailFromCommand(string $address): void
174174
{
175175
$this->executeCommand(sprintf("MAIL FROM:<%s>\r\n", $address), [250]);
176176
}
177177

178-
private function doRcptToCommand($address): void
178+
private function doRcptToCommand(string $address): void
179179
{
180180
$this->executeCommand(sprintf("RCPT TO:<%s>\r\n", $address), [250, 251, 252]);
181181
}

0 commit comments

Comments
 (0)
0