Classes List

Swift_Mime_Headers_PathHeader

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
 65 
 66 
 67 
 68 
 69 
 70 
 71 
 72 
 73 
 74 
 75 
 76 
 77 
 78 
 79 
 80 
 81 
 82 
 83 
 84 
 85 
 86 
 87 
 88 
 89 
 90 
 91 
 92 
 93 
 94 
 95 
 96 
 97 
 98 
 99 
 100 
 101 
 102 
 103 
 104 
 105 
 106 
 107 
 108 
 109 
 110 
 111 
 112 
 113 
 114 
 115 
 116 
 117 
 118 
 119 
 120 
 121 
 122 
 123 
 124 
 125 
 126 
 127 
 128 
 129 
 130 
 131 
 132 
 133 
 134 
 135 
 136 
 137 
 138 
 139 
 140 
 141 
 142 
 143 
 144 
 145 
 146 
 147 
 148 
 149 
 150 
 151 
 152 
 153 
 154 
<?php

/* * This file is part of SwiftMailer. * (c) 2004-2009 Chris Corbyn * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */


use Egulias\EmailValidator\EmailValidator;
use Egulias\EmailValidator\Validation\RFCValidation;

/** * A Path Header in Swift Mailer, such a Return-Path. * * @author Chris Corbyn */
class Swift_Mime_Headers_PathHeader extends Swift_Mime_Headers_AbstractHeader
{
    /** * The address in this Header (if specified). * * @var string */
    private $address;

    /** * The strict EmailValidator. * * @var EmailValidator */
    private $emailValidator;

    private $addressEncoder;

    /** * Creates a new PathHeader with the given $name. * * @param string $name */
    public function __construct($nameEmailValidator $emailValidatorSwift_AddressEncoder $addressEncoder = null)
    {
        $this->setFieldName($name);
        $this->emailValidator = $emailValidator;
        $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder();
    }

    /** * Get the type of Header that this instance represents. * * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX * @see TYPE_DATE, TYPE_ID, TYPE_PATH * * @return int */
    public function getFieldType()
    {
        return self::TYPE_PATH;
    }

    /** * Set the model for the field body. * This method takes a string for an address. * * @param string $model * * @throws Swift_RfcComplianceException */
    public function setFieldBodyModel($model)
    {
        $this->setAddress($model);
    }

    /** * Get the model for the field body. * This method returns a string email address. * * @return mixed */
    public function getFieldBodyModel()
    {
        return $this->getAddress();
    }

    /** * Set the Address which should appear in this Header. * * @param string $address * * @throws Swift_RfcComplianceException */
    public function setAddress($address)
    {
        if (null === $address) {
            $this->address = null;
        } elseif ('' == $address) {
            $this->address = '';
        } else {
            $this->assertValidAddress($address);
            $this->address = $address;
        }
        $this->setCachedValue(null);
    }

    /** * Get the address which is used in this Header (if any). * * Null is returned if no address is set. * * @return string */
    public function getAddress()
    {
        return $this->address;
    }

    /** * Get the string value of the body in this Header. * * This is not necessarily RFC 2822 compliant since folding white space will * not be added at this stage (see {@link toString()} for that). * * @see toString() * * @return string */
    public function getFieldBody()
    {
        if (!$this->getCachedValue()) {
            if (isset($this->address)) {
                $address = $this->addressEncoder->encodeString($this->address);
                $this->setCachedValue('<'.$address.'>');
            }
        }

        return $this->getCachedValue();
    }

    /** * Throws an Exception if the address passed does not comply with RFC 2822. * * @param string $address * * @throws Swift_RfcComplianceException If address is invalid */
    private function assertValidAddress($address)
    {
        if (!$this->emailValidator->isValid($addressnew RFCValidation())) {
            throw new Swift_RfcComplianceException('Address set in PathHeader does not comply with addr-spec of RFC 2822.');
        }
    }
}