[Mime] Remove NamedAddress

This commit is contained in:
Fabien Potencier 2019-08-21 09:00:46 +02:00
parent 5a753b1428
commit eb7d74e6c5
17 changed files with 96 additions and 158 deletions

View File

@ -157,6 +157,11 @@ Messenger
* Deprecated passing a `ContainerInterface` instance as first argument of the `ConsumeMessagesCommand` constructor, * Deprecated passing a `ContainerInterface` instance as first argument of the `ConsumeMessagesCommand` constructor,
pass a `RoutableMessageBus` instance instead. pass a `RoutableMessageBus` instance instead.
Mime
----
* Removed `NamedAddress`, use `Address` instead (which supports a name now)
MonologBridge MonologBridge
-------------- --------------

View File

@ -12,7 +12,6 @@
namespace Symfony\Bridge\Twig\Mime; namespace Symfony\Bridge\Twig\Mime;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\NamedAddress;
use Twig\Environment; use Twig\Environment;
/** /**
@ -33,9 +32,7 @@ final class WrappedTemplatedEmail
public function toName(): string public function toName(): string
{ {
$to = $this->message->getTo()[0]; return $this->message->getTo()[0]->getName();
return $to instanceof NamedAddress ? $to->getName() : '';
} }
public function image(string $image, string $contentType = null): string public function image(string $image, string $contentType = null): string
@ -93,15 +90,15 @@ final class WrappedTemplatedEmail
/** /**
* @return $this * @return $this
*/ */
public function addFrom(string $address, string $name = null): self public function addFrom(string $address, string $name = ''): self
{ {
$this->message->addFrom($name ? new NamedAddress($address, $name) : new Address($address)); $this->message->addFrom(new Address($address, $name));
return $this; return $this;
} }
/** /**
* @return (Address|NamedAddress)[] * @return Address[]
*/ */
public function getFrom(): array public function getFrom(): array
{ {
@ -129,15 +126,15 @@ final class WrappedTemplatedEmail
/** /**
* @return $this * @return $this
*/ */
public function addTo(string $address, string $name = null): self public function addTo(string $address, string $name = ''): self
{ {
$this->message->addTo($name ? new NamedAddress($address, $name) : new Address($address)); $this->message->addTo(new Address($address, $name));
return $this; return $this;
} }
/** /**
* @return (Address|NamedAddress)[] * @return Address[]
*/ */
public function getTo(): array public function getTo(): array
{ {
@ -147,15 +144,15 @@ final class WrappedTemplatedEmail
/** /**
* @return $this * @return $this
*/ */
public function addCc(string $address, string $name = null): self public function addCc(string $address, string $name = ''): self
{ {
$this->message->addCc($name ? new NamedAddress($address, $name) : new Address($address)); $this->message->addCc(new Address($address, $name));
return $this; return $this;
} }
/** /**
* @return (Address|NamedAddress)[] * @return Address[]
*/ */
public function getCc(): array public function getCc(): array
{ {
@ -165,15 +162,15 @@ final class WrappedTemplatedEmail
/** /**
* @return $this * @return $this
*/ */
public function addBcc(string $address, string $name = null): self public function addBcc(string $address, string $name = ''): self
{ {
$this->message->addBcc($name ? new NamedAddress($address, $name) : new Address($address)); $this->message->addBcc(new Address($address, $name));
return $this; return $this;
} }
/** /**
* @return (Address|NamedAddress)[] * @return Address[]
*/ */
public function getBcc(): array public function getBcc(): array
{ {

View File

@ -13,8 +13,8 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\Cont
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Email; use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\NamedAddress;
class EmailController class EmailController
{ {
@ -29,7 +29,7 @@ class EmailController
); );
$mailer->send((new Email())->to('fabien@symfony.com', 'thomas@symfony.com')->from('fabien@symfony.com')->subject('Foo') $mailer->send((new Email())->to('fabien@symfony.com', 'thomas@symfony.com')->from('fabien@symfony.com')->subject('Foo')
->addReplyTo(new NamedAddress('me@symfony.com', 'Fabien Potencier')) ->addReplyTo(new Address('me@symfony.com', 'Fabien Potencier'))
->addCc('cc@symfony.com') ->addCc('cc@symfony.com')
->text('Bar!') ->text('Bar!')
->html('<p>Foo</p>') ->html('<p>Foo</p>')

View File

@ -16,7 +16,6 @@ use Symfony\Component\Mailer\SmtpEnvelope;
use Symfony\Component\Mime\Address; 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;
class SmtpEnvelopeTest extends TestCase class SmtpEnvelopeTest extends TestCase
{ {
@ -28,13 +27,13 @@ class SmtpEnvelopeTest extends TestCase
public function testConstructorWithNamedAddressSender() public function testConstructorWithNamedAddressSender()
{ {
$e = new SmtpEnvelope(new NamedAddress('fabien@symfony.com', 'Fabien'), [new Address('thomas@symfony.com')]); $e = new SmtpEnvelope(new Address('fabien@symfony.com', 'Fabien'), [new Address('thomas@symfony.com')]);
$this->assertEquals(new Address('fabien@symfony.com'), $e->getSender()); $this->assertEquals(new Address('fabien@symfony.com'), $e->getSender());
} }
public function testConstructorWithAddressRecipients() public function testConstructorWithAddressRecipients()
{ {
$e = new SmtpEnvelope(new Address('fabien@symfony.com'), [new Address('thomas@symfony.com'), new NamedAddress('lucas@symfony.com', 'Lucas')]); $e = new SmtpEnvelope(new Address('fabien@symfony.com'), [new Address('thomas@symfony.com'), new Address('lucas@symfony.com', 'Lucas')]);
$this->assertEquals([new Address('thomas@symfony.com'), new Address('lucas@symfony.com')], $e->getRecipients()); $this->assertEquals([new Address('thomas@symfony.com'), new Address('lucas@symfony.com')], $e->getRecipients());
} }
@ -53,19 +52,19 @@ class SmtpEnvelopeTest extends TestCase
public function testSenderFromHeaders() public function testSenderFromHeaders()
{ {
$headers = new Headers(); $headers = new Headers();
$headers->addPathHeader('Return-Path', new NamedAddress('return@symfony.com', 'return')); $headers->addPathHeader('Return-Path', new Address('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', new NamedAddress('sender@symfony.com', 'sender')); $headers->addMailboxHeader('Sender', new Address('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', [new NamedAddress('from@symfony.com', 'from'), 'some@symfony.com']); $headers->addMailboxListHeader('From', [new Address('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());
@ -76,7 +75,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', [new NamedAddress('from@symfony.com', 'from')]); $message->getHeaders()->addMailboxListHeader('From', [new Address('from@symfony.com', 'from')]);
$this->assertEquals('from@symfony.com', $e->getSender()->getAddress()); $this->assertEquals('from@symfony.com', $e->getSender()->getAddress());
} }
@ -84,9 +83,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', [new NamedAddress('to@symfony.com', 'to')]); $headers->addMailboxListHeader('To', [new Address('to@symfony.com', 'to')]);
$headers->addMailboxListHeader('Cc', [new NamedAddress('cc@symfony.com', 'cc')]); $headers->addMailboxListHeader('Cc', [new Address('cc@symfony.com', 'cc')]);
$headers->addMailboxListHeader('Bcc', [new NamedAddress('bcc@symfony.com', 'bcc')]); $headers->addMailboxListHeader('Bcc', [new Address('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());
} }

View File

@ -21,14 +21,15 @@ use Symfony\Component\Mime\Exception\RfcComplianceException;
/** /**
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
*/ */
class Address final class Address
{ {
private static $validator; private static $validator;
private static $encoder; private static $encoder;
private $address; private $address;
private $name;
public function __construct(string $address) public function __construct(string $address, string $name = '')
{ {
if (!class_exists(EmailValidator::class)) { if (!class_exists(EmailValidator::class)) {
throw new LogicException(sprintf('The "%s" class cannot be used as it needs "%s"; try running "composer require egulias/email-validator".', __CLASS__, EmailValidator::class)); throw new LogicException(sprintf('The "%s" class cannot be used as it needs "%s"; try running "composer require egulias/email-validator".', __CLASS__, EmailValidator::class));
@ -43,6 +44,7 @@ class Address
} }
$this->address = $address; $this->address = $address;
$this->name = $name;
} }
public function getAddress(): string public function getAddress(): string
@ -50,6 +52,11 @@ class Address
return $this->address; return $this->address;
} }
public function getName(): string
{
return $this->name;
}
public function getEncodedAddress(): string public function getEncodedAddress(): string
{ {
if (null === self::$encoder) { if (null === self::$encoder) {
@ -61,7 +68,7 @@ class Address
public function toString(): string public function toString(): string
{ {
return $this->getEncodedAddress(); return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
} }
/** /**

View File

@ -4,6 +4,7 @@ CHANGELOG
4.4.0 4.4.0
----- -----
* [BC BREAK] Removed `NamedAddress` (`Address` now supports a name)
* Added PHPUnit constraints * Added PHPUnit constraints
* Added `AbstractPart::asDebugString()` * Added `AbstractPart::asDebugString()`

View File

@ -101,7 +101,7 @@ class Email extends Message
} }
/** /**
* @param Address|NamedAddress|string ...$addresses * @param Address|string ...$addresses
* *
* @return $this * @return $this
*/ */
@ -111,7 +111,7 @@ class Email extends Message
} }
/** /**
* @param Address|NamedAddress|string ...$addresses * @param Address|string ...$addresses
* *
* @return $this * @return $this
*/ */
@ -121,7 +121,7 @@ class Email extends Message
} }
/** /**
* @return (Address|NamedAddress)[] * @return Address[]
*/ */
public function getFrom(): array public function getFrom(): array
{ {
@ -157,7 +157,7 @@ class Email extends Message
} }
/** /**
* @param Address|NamedAddress|string ...$addresses * @param Address|string ...$addresses
* *
* @return $this * @return $this
*/ */
@ -167,7 +167,7 @@ class Email extends Message
} }
/** /**
* @param Address|NamedAddress|string ...$addresses * @param Address|string ...$addresses
* *
* @return $this * @return $this
*/ */
@ -177,7 +177,7 @@ class Email extends Message
} }
/** /**
* @return (Address|NamedAddress)[] * @return Address[]
*/ */
public function getTo(): array public function getTo(): array
{ {
@ -185,7 +185,7 @@ class Email extends Message
} }
/** /**
* @param Address|NamedAddress|string ...$addresses * @param Address|string ...$addresses
* *
* @return $this * @return $this
*/ */
@ -205,7 +205,7 @@ class Email extends Message
} }
/** /**
* @return (Address|NamedAddress)[] * @return Address[]
*/ */
public function getCc(): array public function getCc(): array
{ {
@ -213,7 +213,7 @@ class Email extends Message
} }
/** /**
* @param Address|NamedAddress|string ...$addresses * @param Address|string ...$addresses
* *
* @return $this * @return $this
*/ */
@ -233,7 +233,7 @@ class Email extends Message
} }
/** /**
* @return (Address|NamedAddress)[] * @return Address[]
*/ */
public function getBcc(): array public function getBcc(): array
{ {
@ -524,10 +524,10 @@ class Email extends Message
private function addListAddressHeaderBody(string $name, array $addresses) private function addListAddressHeaderBody(string $name, array $addresses)
{ {
if (!$to = $this->getHeaders()->get($name)) { if (!$header = $this->getHeaders()->get($name)) {
return $this->setListAddressHeaderBody($name, $addresses); return $this->setListAddressHeaderBody($name, $addresses);
} }
$to->addAddresses(Address::createArray($addresses)); $header->addAddresses(Address::createArray($addresses));
return $this; return $this;
} }
@ -536,8 +536,8 @@ class Email extends Message
{ {
$addresses = Address::createArray($addresses); $addresses = Address::createArray($addresses);
$headers = $this->getHeaders(); $headers = $this->getHeaders();
if ($to = $headers->get($name)) { if ($header = $headers->get($name)) {
$to->setAddresses($addresses); $header->setAddresses($addresses);
} else { } else {
$headers->addMailboxListHeader($name, $addresses); $headers->addMailboxListHeader($name, $addresses);
} }

View File

@ -13,7 +13,6 @@ namespace Symfony\Component\Mime\Header;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Exception\LogicException; use Symfony\Component\Mime\Exception\LogicException;
use Symfony\Component\Mime\NamedAddress;
/** /**
* A collection of headers. * A collection of headers.
@ -60,7 +59,7 @@ final class Headers
} }
/** /**
* @param (NamedAddress|Address|string)[] $addresses * @param (Address|string)[] $addresses
* *
* @return $this * @return $this
*/ */
@ -70,7 +69,7 @@ final class Headers
} }
/** /**
* @param NamedAddress|Address|string $address * @param Address|string $address
* *
* @return $this * @return $this
*/ */

View File

@ -13,7 +13,6 @@ namespace Symfony\Component\Mime\Header;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Exception\RfcComplianceException; use Symfony\Component\Mime\Exception\RfcComplianceException;
use Symfony\Component\Mime\NamedAddress;
/** /**
* A Mailbox MIME Header for something like Sender (one named address). * A Mailbox MIME Header for something like Sender (one named address).
@ -67,7 +66,7 @@ final class MailboxHeader extends AbstractHeader
public function getBodyAsString(): string public function getBodyAsString(): string
{ {
$str = $this->address->getEncodedAddress(); $str = $this->address->getEncodedAddress();
if ($this->address instanceof NamedAddress && $name = $this->address->getName()) { if ($name = $this->address->getName()) {
$str = $this->createPhrase($this, $name, $this->getCharset(), true).' <'.$str.'>'; $str = $this->createPhrase($this, $name, $this->getCharset(), true).' <'.$str.'>';
} }

View File

@ -13,7 +13,6 @@ namespace Symfony\Component\Mime\Header;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Exception\RfcComplianceException; use Symfony\Component\Mime\Exception\RfcComplianceException;
use Symfony\Component\Mime\NamedAddress;
/** /**
* A Mailbox list MIME Header for something like From, To, Cc, and Bcc (one or more named addresses). * A Mailbox list MIME Header for something like From, To, Cc, and Bcc (one or more named addresses).
@ -25,7 +24,7 @@ final class MailboxListHeader extends AbstractHeader
private $addresses = []; private $addresses = [];
/** /**
* @param (NamedAddress|Address)[] $addresses * @param Address[] $addresses
*/ */
public function __construct(string $name, array $addresses) public function __construct(string $name, array $addresses)
{ {
@ -35,7 +34,7 @@ final class MailboxListHeader extends AbstractHeader
} }
/** /**
* @param (NamedAddress|Address)[] $body * @param Address[] $body
* *
* @throws RfcComplianceException * @throws RfcComplianceException
*/ */
@ -47,7 +46,7 @@ final class MailboxListHeader extends AbstractHeader
/** /**
* @throws RfcComplianceException * @throws RfcComplianceException
* *
* @return (NamedAddress|Address)[] * @return Address[]
*/ */
public function getBody() public function getBody()
{ {
@ -57,7 +56,7 @@ final class MailboxListHeader extends AbstractHeader
/** /**
* Sets a list of addresses to be shown in this Header. * Sets a list of addresses to be shown in this Header.
* *
* @param (NamedAddress|Address)[] $addresses * @param Address[] $addresses
* *
* @throws RfcComplianceException * @throws RfcComplianceException
*/ */
@ -70,7 +69,7 @@ final class MailboxListHeader extends AbstractHeader
/** /**
* Sets a list of addresses to be shown in this Header. * Sets a list of addresses to be shown in this Header.
* *
* @param (NamedAddress|Address)[] $addresses * @param Address[] $addresses
* *
* @throws RfcComplianceException * @throws RfcComplianceException
*/ */
@ -90,7 +89,7 @@ final class MailboxListHeader extends AbstractHeader
} }
/** /**
* @return (NamedAddress|Address)[] * @return Address[]
*/ */
public function getAddresses(): array public function getAddresses(): array
{ {
@ -109,8 +108,8 @@ final class MailboxListHeader extends AbstractHeader
$strings = []; $strings = [];
foreach ($this->addresses as $address) { foreach ($this->addresses as $address) {
$str = $address->getEncodedAddress(); $str = $address->getEncodedAddress();
if ($address instanceof NamedAddress && $name = $address->getName()) { if ($name = $address->getName()) {
$str = $this->createPhrase($this, $name, $this->getCharset(), empty($strings)).' <'.$str.'>'; $str = $this->createPhrase($this, $name, $this->getCharset(), !$strings).' <'.$str.'>';
} }
$strings[] = $str; $strings[] = $str;
} }

View File

@ -1,42 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Mime;
/**
* @author Fabien Potencier <fabien@symfony.com>
*/
final class NamedAddress extends Address
{
private $name;
public function __construct(string $address, string $name)
{
parent::__construct($address);
$this->name = $name;
}
public function getName(): string
{
return $this->name;
}
public function getEncodedNamedAddress(): string
{
return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
}
public function toString(): string
{
return $this->getEncodedNamedAddress();
}
}

View File

@ -13,7 +13,6 @@ namespace Symfony\Component\Mime\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\NamedAddress;
class AddressTest extends TestCase class AddressTest extends TestCase
{ {
@ -23,6 +22,12 @@ class AddressTest extends TestCase
$this->assertEquals('fabien@symfonï.com', $a->getAddress()); $this->assertEquals('fabien@symfonï.com', $a->getAddress());
$this->assertEquals('fabien@xn--symfon-nwa.com', $a->toString()); $this->assertEquals('fabien@xn--symfon-nwa.com', $a->toString());
$this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress()); $this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
$a = new Address('fabien@symfonï.com', 'Fabien');
$this->assertEquals('Fabien', $a->getName());
$this->assertEquals('fabien@symfonï.com', $a->getAddress());
$this->assertEquals('Fabien <fabien@xn--symfon-nwa.com>', $a->toString());
$this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
} }
public function testConstructorWithInvalidAddress() public function testConstructorWithInvalidAddress()
@ -34,7 +39,7 @@ class AddressTest extends TestCase
public function testCreate() public function testCreate()
{ {
$this->assertSame($a = new Address('fabien@symfony.com'), Address::create($a)); $this->assertSame($a = new Address('fabien@symfony.com'), Address::create($a));
$this->assertSame($b = new NamedAddress('helene@symfony.com', 'Helene'), Address::create($b)); $this->assertSame($b = new Address('helene@symfony.com', 'Helene'), Address::create($b));
$this->assertEquals($a, Address::create('fabien@symfony.com')); $this->assertEquals($a, Address::create('fabien@symfony.com'));
} }
@ -47,7 +52,7 @@ class AddressTest extends TestCase
public function testCreateArray() public function testCreateArray()
{ {
$fabien = new Address('fabien@symfony.com'); $fabien = new Address('fabien@symfony.com');
$helene = new NamedAddress('helene@symfony.com', 'Helene'); $helene = new Address('helene@symfony.com', 'Helene');
$this->assertSame([$fabien, $helene], Address::createArray([$fabien, $helene])); $this->assertSame([$fabien, $helene], Address::createArray([$fabien, $helene]));
$this->assertEquals([$fabien], Address::createArray(['fabien@symfony.com'])); $this->assertEquals([$fabien], Address::createArray(['fabien@symfony.com']));

View File

@ -14,7 +14,6 @@ namespace Symfony\Component\Mime\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Email; use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\NamedAddress;
use Symfony\Component\Mime\Part\DataPart; use Symfony\Component\Mime\Part\DataPart;
use Symfony\Component\Mime\Part\Multipart\AlternativePart; use Symfony\Component\Mime\Part\Multipart\AlternativePart;
use Symfony\Component\Mime\Part\Multipart\MixedPart; use Symfony\Component\Mime\Part\Multipart\MixedPart;
@ -58,7 +57,7 @@ class EmailTest extends TestCase
{ {
$e = new Email(); $e = new Email();
$helene = new Address('helene@symfony.com'); $helene = new Address('helene@symfony.com');
$thomas = new NamedAddress('thomas@symfony.com', 'Thomas'); $thomas = new Address('thomas@symfony.com', 'Thomas');
$caramel = new Address('caramel@symfony.com'); $caramel = new Address('caramel@symfony.com');
$this->assertSame($e, $e->from('fabien@symfony.com', $helene, $thomas)); $this->assertSame($e, $e->from('fabien@symfony.com', $helene, $thomas));
@ -91,7 +90,7 @@ class EmailTest extends TestCase
{ {
$e = new Email(); $e = new Email();
$helene = new Address('helene@symfony.com'); $helene = new Address('helene@symfony.com');
$thomas = new NamedAddress('thomas@symfony.com', 'Thomas'); $thomas = new Address('thomas@symfony.com', 'Thomas');
$caramel = new Address('caramel@symfony.com'); $caramel = new Address('caramel@symfony.com');
$this->assertSame($e, $e->replyTo('fabien@symfony.com', $helene, $thomas)); $this->assertSame($e, $e->replyTo('fabien@symfony.com', $helene, $thomas));
@ -124,7 +123,7 @@ class EmailTest extends TestCase
{ {
$e = new Email(); $e = new Email();
$helene = new Address('helene@symfony.com'); $helene = new Address('helene@symfony.com');
$thomas = new NamedAddress('thomas@symfony.com', 'Thomas'); $thomas = new Address('thomas@symfony.com', 'Thomas');
$caramel = new Address('caramel@symfony.com'); $caramel = new Address('caramel@symfony.com');
$this->assertSame($e, $e->to('fabien@symfony.com', $helene, $thomas)); $this->assertSame($e, $e->to('fabien@symfony.com', $helene, $thomas));
@ -157,7 +156,7 @@ class EmailTest extends TestCase
{ {
$e = new Email(); $e = new Email();
$helene = new Address('helene@symfony.com'); $helene = new Address('helene@symfony.com');
$thomas = new NamedAddress('thomas@symfony.com', 'Thomas'); $thomas = new Address('thomas@symfony.com', 'Thomas');
$caramel = new Address('caramel@symfony.com'); $caramel = new Address('caramel@symfony.com');
$this->assertSame($e, $e->cc('fabien@symfony.com', $helene, $thomas)); $this->assertSame($e, $e->cc('fabien@symfony.com', $helene, $thomas));
@ -190,7 +189,7 @@ class EmailTest extends TestCase
{ {
$e = new Email(); $e = new Email();
$helene = new Address('helene@symfony.com'); $helene = new Address('helene@symfony.com');
$thomas = new NamedAddress('thomas@symfony.com', 'Thomas'); $thomas = new Address('thomas@symfony.com', 'Thomas');
$caramel = new Address('caramel@symfony.com'); $caramel = new Address('caramel@symfony.com');
$this->assertSame($e, $e->bcc('fabien@symfony.com', $helene, $thomas)); $this->assertSame($e, $e->bcc('fabien@symfony.com', $helene, $thomas));

View File

@ -14,7 +14,6 @@ namespace Symfony\Component\Mime\Tests\Header;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Header\MailboxHeader; use Symfony\Component\Mime\Header\MailboxHeader;
use Symfony\Component\Mime\NamedAddress;
class MailboxHeaderTest extends TestCase class MailboxHeaderTest extends TestCase
{ {
@ -44,17 +43,17 @@ class MailboxHeaderTest extends TestCase
$header->setAddress(new Address('fabien@sïmfony.com')); $header->setAddress(new Address('fabien@sïmfony.com'));
$this->assertEquals('fabien@xn--smfony-iwa.com', $header->getBodyAsString()); $this->assertEquals('fabien@xn--smfony-iwa.com', $header->getBodyAsString());
$header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier')); $header = new MailboxHeader('Sender', new Address('fabien@symfony.com', 'Fabien Potencier'));
$this->assertEquals('Fabien Potencier <fabien@symfony.com>', $header->getBodyAsString()); $this->assertEquals('Fabien Potencier <fabien@symfony.com>', $header->getBodyAsString());
$header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier, "from Symfony"')); $header = new MailboxHeader('Sender', new Address('fabien@symfony.com', 'Fabien Potencier, "from Symfony"'));
$this->assertEquals('"Fabien Potencier, \"from Symfony\"" <fabien@symfony.com>', $header->getBodyAsString()); $this->assertEquals('"Fabien Potencier, \"from Symfony\"" <fabien@symfony.com>', $header->getBodyAsString());
$header = new MailboxHeader('From', new NamedAddress('fabien@symfony.com', 'Fabien Potencier, \\escaped\\')); $header = new MailboxHeader('From', new Address('fabien@symfony.com', 'Fabien Potencier, \\escaped\\'));
$this->assertEquals('"Fabien Potencier, \\\\escaped\\\\" <fabien@symfony.com>', $header->getBodyAsString()); $this->assertEquals('"Fabien Potencier, \\\\escaped\\\\" <fabien@symfony.com>', $header->getBodyAsString());
$name = 'P'.pack('C', 0x8F).'tencier'; $name = 'P'.pack('C', 0x8F).'tencier';
$header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien '.$name)); $header = new MailboxHeader('Sender', new Address('fabien@symfony.com', 'Fabien '.$name));
$header->setCharset('iso-8859-1'); $header->setCharset('iso-8859-1');
$this->assertEquals('Fabien =?'.$header->getCharset().'?Q?P=8Ftencier?= <fabien@symfony.com>', $header->getBodyAsString()); $this->assertEquals('Fabien =?'.$header->getCharset().'?Q?P=8Ftencier?= <fabien@symfony.com>', $header->getBodyAsString());
} }
@ -71,7 +70,7 @@ class MailboxHeaderTest extends TestCase
$header = new MailboxHeader('Sender', new Address('fabien@symfony.com')); $header = new MailboxHeader('Sender', new Address('fabien@symfony.com'));
$this->assertEquals('Sender: fabien@symfony.com', $header->toString()); $this->assertEquals('Sender: fabien@symfony.com', $header->toString());
$header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier')); $header = new MailboxHeader('Sender', new Address('fabien@symfony.com', 'Fabien Potencier'));
$this->assertEquals('Sender: Fabien Potencier <fabien@symfony.com>', $header->toString()); $this->assertEquals('Sender: Fabien Potencier <fabien@symfony.com>', $header->toString());
} }
} }

View File

@ -14,7 +14,6 @@ namespace Symfony\Component\Mime\Tests\Header;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Header\MailboxListHeader; use Symfony\Component\Mime\Header\MailboxListHeader;
use Symfony\Component\Mime\NamedAddress;
class MailboxListHeaderTest extends TestCase class MailboxListHeaderTest extends TestCase
{ {
@ -28,7 +27,7 @@ class MailboxListHeaderTest extends TestCase
public function testMailboxIsRenderedForNameAddress() public function testMailboxIsRenderedForNameAddress()
{ {
$header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn')]); $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org', 'Chris Corbyn')]);
$this->assertEquals(['Chris Corbyn <chris@swiftmailer.org>'], $header->getAddressStrings()); $this->assertEquals(['Chris Corbyn <chris@swiftmailer.org>'], $header->getAddressStrings());
} }
@ -40,32 +39,32 @@ class MailboxListHeaderTest extends TestCase
public function testQuotesInNameAreQuoted() public function testQuotesInNameAreQuoted()
{ {
$header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, "DHE"')]); $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org', 'Chris Corbyn, "DHE"')]);
$this->assertEquals(['"Chris Corbyn, \"DHE\"" <chris@swiftmailer.org>'], $header->getAddressStrings()); $this->assertEquals(['"Chris Corbyn, \"DHE\"" <chris@swiftmailer.org>'], $header->getAddressStrings());
} }
public function testEscapeCharsInNameAreQuoted() public function testEscapeCharsInNameAreQuoted()
{ {
$header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, \\escaped\\')]); $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org', 'Chris Corbyn, \\escaped\\')]);
$this->assertEquals(['"Chris Corbyn, \\\\escaped\\\\" <chris@swiftmailer.org>'], $header->getAddressStrings()); $this->assertEquals(['"Chris Corbyn, \\\\escaped\\\\" <chris@swiftmailer.org>'], $header->getAddressStrings());
} }
public function testUtf8CharsInDomainAreIdnEncoded() public function testUtf8CharsInDomainAreIdnEncoded()
{ {
$header = new MailboxListHeader('From', [new NamedAddress('chris@swïftmailer.org', 'Chris Corbyn')]); $header = new MailboxListHeader('From', [new Address('chris@swïftmailer.org', 'Chris Corbyn')]);
$this->assertEquals(['Chris Corbyn <chris@xn--swftmailer-78a.org>'], $header->getAddressStrings()); $this->assertEquals(['Chris Corbyn <chris@xn--swftmailer-78a.org>'], $header->getAddressStrings());
} }
public function testUtf8CharsInLocalPartThrows() public function testUtf8CharsInLocalPartThrows()
{ {
$this->expectException('Symfony\Component\Mime\Exception\AddressEncoderException'); $this->expectException('Symfony\Component\Mime\Exception\AddressEncoderException');
$header = new MailboxListHeader('From', [new NamedAddress('chrïs@swiftmailer.org', 'Chris Corbyn')]); $header = new MailboxListHeader('From', [new Address('chrïs@swiftmailer.org', 'Chris Corbyn')]);
$header->getAddressStrings(); $header->getAddressStrings();
} }
public function testGetMailboxesReturnsNameValuePairs() public function testGetMailboxesReturnsNameValuePairs()
{ {
$header = new MailboxListHeader('From', $addresses = [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, DHE')]); $header = new MailboxListHeader('From', $addresses = [new Address('chris@swiftmailer.org', 'Chris Corbyn, DHE')]);
$this->assertEquals($addresses, $header->getAddresses()); $this->assertEquals($addresses, $header->getAddresses());
} }
@ -78,7 +77,7 @@ class MailboxListHeaderTest extends TestCase
public function testNameIsEncodedIfNonAscii() public function testNameIsEncodedIfNonAscii()
{ {
$name = 'C'.pack('C', 0x8F).'rbyn'; $name = 'C'.pack('C', 0x8F).'rbyn';
$header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris '.$name)]); $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org', 'Chris '.$name)]);
$header->setCharset('iso-8859-1'); $header->setCharset('iso-8859-1');
$addresses = $header->getAddressStrings(); $addresses = $header->getAddressStrings();
$this->assertEquals('Chris =?'.$header->getCharset().'?Q?C=8Frbyn?= <chris@swiftmailer.org>', array_shift($addresses)); $this->assertEquals('Chris =?'.$header->getCharset().'?Q?C=8Frbyn?= <chris@swiftmailer.org>', array_shift($addresses));
@ -92,7 +91,7 @@ class MailboxListHeaderTest extends TestCase
*/ */
$name = 'C'.pack('C', 0x8F).'rbyn'; $name = 'C'.pack('C', 0x8F).'rbyn';
$header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris '.$name)]); $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org', 'Chris '.$name)]);
$header->setCharset('iso-8859-1'); $header->setCharset('iso-8859-1');
$addresses = $header->getAddressStrings(); $addresses = $header->getAddressStrings();
$this->assertEquals('Chris =?'.$header->getCharset().'?Q?C=8Frbyn?= <chris@swiftmailer.org>', array_shift($addresses)); $this->assertEquals('Chris =?'.$header->getCharset().'?Q?C=8Frbyn?= <chris@swiftmailer.org>', array_shift($addresses));
@ -100,13 +99,13 @@ class MailboxListHeaderTest extends TestCase
public function testGetValueReturnsMailboxStringValue() public function testGetValueReturnsMailboxStringValue()
{ {
$header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn')]); $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org', 'Chris Corbyn')]);
$this->assertEquals('Chris Corbyn <chris@swiftmailer.org>', $header->getBodyAsString()); $this->assertEquals('Chris Corbyn <chris@swiftmailer.org>', $header->getBodyAsString());
} }
public function testGetValueReturnsMailboxStringValueForMultipleMailboxes() public function testGetValueReturnsMailboxStringValueForMultipleMailboxes()
{ {
$header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn'), new NamedAddress('mark@swiftmailer.org', 'Mark Corbyn')]); $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org', 'Chris Corbyn'), new Address('mark@swiftmailer.org', 'Mark Corbyn')]);
$this->assertEquals('Chris Corbyn <chris@swiftmailer.org>, Mark Corbyn <mark@swiftmailer.org>', $header->getBodyAsString()); $this->assertEquals('Chris Corbyn <chris@swiftmailer.org>, Mark Corbyn <mark@swiftmailer.org>', $header->getBodyAsString());
} }
@ -125,7 +124,7 @@ class MailboxListHeaderTest extends TestCase
public function testToString() public function testToString()
{ {
$header = new MailboxListHeader('From', [new NamedAddress('chris@example.org', 'Chris Corbyn'), new NamedAddress('mark@example.org', 'Mark Corbyn')]); $header = new MailboxListHeader('From', [new Address('chris@example.org', 'Chris Corbyn'), new Address('mark@example.org', 'Mark Corbyn')]);
$this->assertEquals('From: Chris Corbyn <chris@example.org>, Mark Corbyn <mark@example.org>', $header->toString()); $this->assertEquals('From: Chris Corbyn <chris@example.org>, Mark Corbyn <mark@example.org>', $header->toString());
} }
} }

View File

@ -17,7 +17,6 @@ use Symfony\Component\Mime\Header\Headers;
use Symfony\Component\Mime\Header\MailboxListHeader; use Symfony\Component\Mime\Header\MailboxListHeader;
use Symfony\Component\Mime\Header\UnstructuredHeader; use Symfony\Component\Mime\Header\UnstructuredHeader;
use Symfony\Component\Mime\Message; use Symfony\Component\Mime\Message;
use Symfony\Component\Mime\NamedAddress;
use Symfony\Component\Mime\Part\TextPart; use Symfony\Component\Mime\Part\TextPart;
class MessageTest extends TestCase class MessageTest extends TestCase
@ -94,9 +93,9 @@ class MessageTest extends TestCase
public function testGetPreparedHeadersWithNamedFrom() public function testGetPreparedHeadersWithNamedFrom()
{ {
$message = new Message(); $message = new Message();
$message->getHeaders()->addMailboxListHeader('From', [new NamedAddress('fabien@symfony.com', 'Fabien')]); $message->getHeaders()->addMailboxListHeader('From', [new Address('fabien@symfony.com', 'Fabien')]);
$h = $message->getPreparedHeaders(); $h = $message->getPreparedHeaders();
$this->assertEquals(new MailboxListHeader('From', [new NamedAddress('fabien@symfony.com', 'Fabien')]), $h->get('From')); $this->assertEquals(new MailboxListHeader('From', [new Address('fabien@symfony.com', 'Fabien')]), $h->get('From'));
$this->assertTrue($h->has('Message-Id')); $this->assertTrue($h->has('Message-Id'));
} }

View File

@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Mime\Tests;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Mime\NamedAddress;
class NamedAddressTest extends TestCase
{
public function testConstructor()
{
$a = new NamedAddress('fabien@symfonï.com', 'Fabien');
$this->assertEquals('Fabien', $a->getName());
$this->assertEquals('fabien@symfonï.com', $a->getAddress());
$this->assertEquals('Fabien <fabien@xn--symfon-nwa.com>', $a->toString());
$this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
}
}