Skip to content

Commit ea99a09

Browse files
committed
[Mime] Keep Sender full address when used by non-SMTP transports
1 parent f8a19c7 commit ea99a09

File tree

3 files changed

+33
-29
lines changed

3 files changed

+33
-29
lines changed

Envelope.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ public static function create(RawMessage $message): self
4444

4545
public function setSender(Address $sender): void
4646
{
47-
$this->sender = new Address($sender->getAddress());
47+
$this->sender = $sender;
4848
}
4949

50+
/**
51+
* @return Address Returns a "mailbox" as specified by RFC 2822
52+
* Must be converted to an "addr-spec" when used as a "MAIL FROM" value in SMTP (use getAddress())
53+
*/
5054
public function getSender(): Address
5155
{
5256
return $this->sender;

EnvelopeTest.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public function testConstructorWithAddressSender()
2929

3030
public function testConstructorWithNamedAddressSender()
3131
{
32-
$e = new Envelope(new Address('[email protected]', 'Fabien'), [new Address('[email protected]')]);
33-
$this->assertEquals(new Address('[email protected]'), $e->getSender());
32+
$e = new Envelope($sender = new Address('[email protected]', 'Fabien'), [new Address('[email protected]')]);
33+
$this->assertEquals($sender, $e->getSender());
3434
}
3535

3636
public function testConstructorWithAddressRecipients()
@@ -54,31 +54,31 @@ public function testConstructorWithWrongRecipients()
5454
public function testSenderFromHeaders()
5555
{
5656
$headers = new Headers();
57-
$headers->addPathHeader('Return-Path', new Address('[email protected]', 'return'));
58-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
57+
$headers->addPathHeader('Return-Path', $return = new Address('[email protected]', 'return'));
58+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
5959
$e = Envelope::create(new Message($headers));
60-
$this->assertEquals(new Address('return@symfony.com', 'return'), $e->getSender());
60+
$this->assertEquals($return, $e->getSender());
6161

6262
$headers = new Headers();
63-
$headers->addMailboxHeader('Sender', new Address('[email protected]', 'sender'));
64-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
63+
$headers->addMailboxHeader('Sender', $sender = new Address('[email protected]', 'sender'));
64+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
6565
$e = Envelope::create(new Message($headers));
66-
$this->assertEquals(new Address('sender@symfony.com', 'sender'), $e->getSender());
66+
$this->assertEquals($sender, $e->getSender());
6767

6868
$headers = new Headers();
69-
$headers->addMailboxListHeader('From', [new Address('[email protected]', 'from'), '[email protected]']);
70-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
69+
$headers->addMailboxListHeader('From', [$from = new Address('[email protected]', 'from'), '[email protected]']);
70+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
7171
$e = Envelope::create(new Message($headers));
72-
$this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender());
72+
$this->assertEquals($from, $e->getSender());
7373
}
7474

7575
public function testSenderFromHeadersWithoutFrom()
7676
{
7777
$headers = new Headers();
78-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
78+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
7979
$e = Envelope::create($message = new Message($headers));
80-
$message->getHeaders()->addMailboxListHeader('From', [new Address('[email protected]', 'from')]);
81-
$this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender());
80+
$message->getHeaders()->addMailboxListHeader('From', [$from = new Address('[email protected]', 'from')]);
81+
$this->assertEquals($from, $e->getSender());
8282
}
8383

8484
public function testRecipientsFromHeaders()

Tests/EnvelopeTest.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public function testConstructorWithAddressSender()
2929

3030
public function testConstructorWithNamedAddressSender()
3131
{
32-
$e = new Envelope(new Address('[email protected]', 'Fabien'), [new Address('[email protected]')]);
33-
$this->assertEquals(new Address('[email protected]'), $e->getSender());
32+
$e = new Envelope($sender = new Address('[email protected]', 'Fabien'), [new Address('[email protected]')]);
33+
$this->assertEquals($sender, $e->getSender());
3434
}
3535

3636
public function testConstructorWithAddressRecipients()
@@ -54,31 +54,31 @@ public function testConstructorWithWrongRecipients()
5454
public function testSenderFromHeaders()
5555
{
5656
$headers = new Headers();
57-
$headers->addPathHeader('Return-Path', new Address('[email protected]', 'return'));
58-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
57+
$headers->addPathHeader('Return-Path', $return = new Address('[email protected]', 'return'));
58+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
5959
$e = Envelope::create(new Message($headers));
60-
$this->assertEquals(new Address('return@symfony.com', 'return'), $e->getSender());
60+
$this->assertEquals($return, $e->getSender());
6161

6262
$headers = new Headers();
63-
$headers->addMailboxHeader('Sender', new Address('[email protected]', 'sender'));
64-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
63+
$headers->addMailboxHeader('Sender', $sender = new Address('[email protected]', 'sender'));
64+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
6565
$e = Envelope::create(new Message($headers));
66-
$this->assertEquals(new Address('sender@symfony.com', 'sender'), $e->getSender());
66+
$this->assertEquals($sender, $e->getSender());
6767

6868
$headers = new Headers();
69-
$headers->addMailboxListHeader('From', [new Address('[email protected]', 'from'), '[email protected]']);
70-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
69+
$headers->addMailboxListHeader('From', [$from = new Address('[email protected]', 'from'), '[email protected]']);
70+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
7171
$e = Envelope::create(new Message($headers));
72-
$this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender());
72+
$this->assertEquals($from, $e->getSender());
7373
}
7474

7575
public function testSenderFromHeadersWithoutFrom()
7676
{
7777
$headers = new Headers();
78-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
78+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
7979
$e = Envelope::create($message = new Message($headers));
80-
$message->getHeaders()->addMailboxListHeader('From', [new Address('[email protected]', 'from')]);
81-
$this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender());
80+
$message->getHeaders()->addMailboxListHeader('From', [$from = new Address('[email protected]', 'from')]);
81+
$this->assertEquals($from, $e->getSender());
8282
}
8383

8484
public function testRecipientsFromHeaders()

0 commit comments

Comments
 (0)