Skip to content

Commit ceb4003

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 4493108 + 8eae3f7 commit ceb4003

File tree

4 files changed

+21
-10
lines changed

4 files changed

+21
-10
lines changed

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
}

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()

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]);

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)