Просмотр файла vendor/symfony/mime/Header/MailboxHeader.php

Размер файла: 1.9Kb
  1. <?php
  2.  
  3. /*
  4. * This file is part of the Symfony package.
  5. *
  6. * (c) Fabien Potencier <fabien@symfony.com>
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11.  
  12. namespace Symfony\Component\Mime\Header;
  13.  
  14. use Symfony\Component\Mime\Address;
  15. use Symfony\Component\Mime\Exception\RfcComplianceException;
  16.  
  17. /**
  18. * A Mailbox MIME Header for something like Sender (one named address).
  19. *
  20. * @author Fabien Potencier <fabien@symfony.com>
  21. */
  22. final class MailboxHeader extends AbstractHeader
  23. {
  24. private $address;
  25.  
  26. public function __construct(string $name, Address $address)
  27. {
  28. parent::__construct($name);
  29.  
  30. $this->setAddress($address);
  31. }
  32.  
  33. /**
  34. * @param Address $body
  35. *
  36. * @throws RfcComplianceException
  37. */
  38. public function setBody($body)
  39. {
  40. $this->setAddress($body);
  41. }
  42.  
  43. /**
  44. * @throws RfcComplianceException
  45. */
  46. public function getBody(): Address
  47. {
  48. return $this->getAddress();
  49. }
  50.  
  51. /**
  52. * @throws RfcComplianceException
  53. */
  54. public function setAddress(Address $address)
  55. {
  56. $this->address = $address;
  57. }
  58.  
  59. public function getAddress(): Address
  60. {
  61. return $this->address;
  62. }
  63.  
  64. public function getBodyAsString(): string
  65. {
  66. $str = $this->address->getEncodedAddress();
  67. if ($name = $this->address->getName()) {
  68. $str = $this->createPhrase($this, $name, $this->getCharset(), true).' <'.$str.'>';
  69. }
  70.  
  71. return $str;
  72. }
  73.  
  74. /**
  75. * Redefine the encoding requirements for an address.
  76. *
  77. * All "specials" must be encoded as the full header value will not be quoted
  78. *
  79. * @see RFC 2822 3.2.1
  80. */
  81. protected function tokenNeedsEncoding(string $token): bool
  82. {
  83. return preg_match('/[()<>\[\]:;@\,."]/', $token) || parent::tokenNeedsEncoding($token);
  84. }
  85. }