Skip to content

Commit 3e8a726

Browse files
committed
Merge branch '4.3' into 4.4
* 4.3: maintain sender/recipient name in SMTP envelopes Fix #32148 TransportException was not thrown
2 parents 6988286 + 828e5a4 commit 3e8a726

File tree

4 files changed

+21
-10
lines changed

4 files changed

+21
-10
lines changed

src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php

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

48-
return new Address(self::getSenderFromHeaders($this->message->getHeaders())->getAddress());
48+
return self::getSenderFromHeaders($this->message->getHeaders());
4949
}
5050

5151
public function setRecipients(array $recipients): void
@@ -73,7 +73,7 @@ private static function getRecipientsFromHeaders(Headers $headers): array
7373
foreach (['to', 'cc', 'bcc'] as $name) {
7474
foreach ($headers->all($name) as $header) {
7575
foreach ($header->getAddresses() as $address) {
76-
$recipients[] = new Address($address->getAddress());
76+
$recipients[] = $address;
7777
}
7878
}
7979
}

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

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

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

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

7575
public function testSenderFromHeadersWithoutFrom()
@@ -78,18 +78,29 @@ public function testSenderFromHeadersWithoutFrom()
7878
$headers->addMailboxListHeader('To', ['from@symfony.com']);
7979
$e = SmtpEnvelope::create($message = new Message($headers));
8080
$message->getHeaders()->addMailboxListHeader('From', [new Address('from@symfony.com', 'from')]);
81-
$this->assertEquals('from@symfony.com', $e->getSender()->getAddress());
81+
$this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender());
8282
}
8383

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

95106
public function testFromRawMessages()

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,9 @@ protected function doSend(SentMessage $message): void
165165
{
166166
try {
167167
$envelope = $message->getEnvelope();
168-
$this->doMailFromCommand($envelope->getSender()->toString());
168+
$this->doMailFromCommand($envelope->getSender()->getAddress());
169169
foreach ($envelope->getRecipients() as $recipient) {
170-
$this->doRcptToCommand($recipient->toString());
170+
$this->doRcptToCommand($recipient->getAddress());
171171
}
172172

173173
$this->executeCommand("DATA\r\n", [354]);

src/Symfony/Component/Mailer/Transport/Smtp/Stream/AbstractStream.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public function write(string $bytes, $debug = true): void
4141
$bytesToWrite = \strlen($bytes);
4242
$totalBytesWritten = 0;
4343
while ($totalBytesWritten < $bytesToWrite) {
44-
$bytesWritten = fwrite($this->in, substr($bytes, $totalBytesWritten));
44+
$bytesWritten = @fwrite($this->in, substr($bytes, $totalBytesWritten));
4545
if (false === $bytesWritten || 0 === $bytesWritten) {
4646
throw new TransportException('Unable to write bytes on the wire.');
4747
}

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