ReceivedHeader extends ParameterHeader
Represents a Received header.
The returned header value (as returned by a call to ReceivedHeader::getValue()) for a ReceivedHeader is the same as the raw value (as returned by a call to ReceivedHeader::getRawValue()) since the header doesn't have a single 'value' to extract.
The parsed parts of a Received header can be accessed as parameters.  To
check if a part exists, call ReceivedHeader::hasParameter() with the
name of the part, for example: $header->hasParameter('from') or
$header->hasParameter('id').  The value of the part can be obtained
by calling ReceivedHeader::getValueFor(), for example
$header->getValueFor('with');.
Additional parsing is performed on the "FROM" and "BY" parts of a received header in an attempt to extract the self-identified name of the server, its hostname, and its address (depending on what's included). These can be accessed directly from the ReceivedHeader object by calling one of the following methods:
o ReceivedHeader::getFromName() -- the name portion of the FROM part o ReceivedHeader::getFromHostname() -- the hostname of the FROM part o ReceivedHeader::getFromAddress() -- the adddress portion of the FROM part o ReceivedHeader::getByName() -- same as getFromName, but for the BY part, and etc... below o ReceivedHeader::getByHostname() o ReceivedHeader::getByAddress()
The parsed parts of the FROM and BY parts are determined as follows:
o Anything outside and before a parenthesized expression is considered "the name", for example "FROM AlainDeBotton", "AlainDeBotton" would be the name, but also if the name is an address, but exists outside the parenthesized expression, it's still considered "the name". For example: "From [1.2.3.4]", getFromName would return "[1.2.3.4]". o A parenthesized expression MUST match what looks like either a domain name on its own, or a domain name and an address. Otherwise the parenthesized expression is considered a comment, and not parsed into hostname and address. The rules are defined loosely because many implementations differ in how strictly they follow the standard. For a domain, it's enough that the expression starts with any alphanumeric character and contains at least one '.', followed by any number of '.', '-' and alphanumeric characters. The address portion must be surrounded in square brackets, and contain any sequence of '.', ':', numbers, and characters 'a' through 'f'. In addition the string 'ipv6' may start the expression (for instance, '[ipv6:::1]' would be valid). A port number may also be considered valid as part of the address, for example: [1.2.3.4:3231]. No additional validation on the address is done, and so an invalid address such as '....' could be returned, so users using the 'address' header are encouraged to validate it before using it. The square brackets are parsed out of the returned address, so the value returned by getFromAddress() would be "2.2.2.2", not "[2.2.2.2]".
The date/time stamp can be accessed as a DateTime object by calling ReceivedHeader::getDateTime().
Parsed comments can be accessed by calling ReceivedHeader::getComments(). Some implementations may include connection encryption information or other details in non-standardized comments.
Tags
Table of Contents
- $comments : array<string|int, string>
 - $date : DateTime
 - $name : string
 - $parameters : array<string|int, ParameterPart>
 - $parts : array<string|int, HeaderPart>
 - $rawValue : string
 - __construct() : mixed
 - Assigns the header's name and raw value, then calls getConsumer and setParseHeaderValue to extract a parsed value.
 - __toString() : string
 - Returns the string representation of the header. At the moment this is just in the form of:
 - getByAddress() : string
 - Returns the address part of a parenthesized BY part.
 - getByHostname() : string
 - Returns the hostname part of a parenthesized BY part.
 - getByName() : string
 - Returns the name identified in the BY part of the header.
 - getComments() : array<string|int, string>
 - Returns an array of comments parsed from the header. If there are no comments in the header, an empty array is returned.
 - getDateTime() : DateTime
 - Returns the date/time stamp for the received header.
 - getFromAddress() : string
 - Returns the address part of a parenthesized FROM part.
 - getFromHostname() : string
 - Returns the hostname part of a parenthesized FROM part.
 - getFromName() : string
 - Returns the name identified in the FROM part of the header.
 - getName() : string
 - Returns the name of the header.
 - getParts() : array<string|int, HeaderPart>
 - Returns an array of HeaderPart objects associated with this header.
 - getRawValue() : string
 - Returns the raw value of the header prior to any processing.
 - getValue() : string
 - Returns the raw, unparsed header value, same as {@see ReceivedHeader::getRawValue()}.
 - getValueFor() : string
 - Returns the value of the parameter with the given name, or $defaultValue if not set.
 - hasParameter() : bool
 - Returns true if a parameter exists with the passed name.
 - getConsumer() : AbstractConsumer
 - Returns a ReceivedConsumer.
 - setParseHeaderValue() : mixed
 - Overridden to assign comments to $this->comments, and the DateTime to $this->date.
 
Properties
$comments
    protected
        array<string|int, string>
    $comments
     = []
        
    
$date
    protected
        DateTime
    $date
    
        
    
$name
    protected
        string
    $name
    
        
    
$parameters
    protected
        array<string|int, ParameterPart>
    $parameters
     = []
        
    
$parts
    protected
        array<string|int, HeaderPart>
    $parts
    
        
    
$rawValue
    protected
        string
    $rawValue
    
        
    
Methods
__construct()
Assigns the header's name and raw value, then calls getConsumer and setParseHeaderValue to extract a parsed value.
    public
                __construct(ConsumerService $consumerService, string $name, string $value) : mixed
        
        Parameters
- $consumerService : ConsumerService
 - $name : string
 - $value : string
 
Return values
mixed —__toString()
Returns the string representation of the header. At the moment this is just in the form of:
    public
                __toString() : string
        No additional processing is performed (for instance to wrap long lines.)
Return values
string —getByAddress()
Returns the address part of a parenthesized BY part.
    public
                getByAddress() : string
        For example, "BY name ([1.2.3.4])" would return the string "1.2.3.4". Validation of the address is not performed, and the returned value may not be valid. More details on how the value is parsed and extracted can be found in the class description for ReceivedHeader.
Return values
string —getByHostname()
Returns the hostname part of a parenthesized BY part.
    public
                getByHostname() : string
        For example, "BY name (host.name)" would return the string "host.name". Validation of the hostname is not performed, and the returned value may not be valid. More details on how the value is parsed and extracted can be found in the class description for ReceivedHeader.
Return values
string —getByName()
Returns the name identified in the BY part of the header.
    public
                getByName() : string
        The returned value may either be a name or an address in the form "[1.2.3.4]". Validation is not performed on this value, and so whatever exists in this position is returned -- be it contains spaces, or invalid characters, etc...
Return values
string —getComments()
Returns an array of comments parsed from the header. If there are no comments in the header, an empty array is returned.
    public
                getComments() : array<string|int, string>
        
    
    
        Return values
array<string|int, string> —getDateTime()
Returns the date/time stamp for the received header.
    public
                getDateTime() : DateTime
        
    
    
        Return values
DateTime —getFromAddress()
Returns the address part of a parenthesized FROM part.
    public
                getFromAddress() : string
        For example, "FROM name ([1.2.3.4])" would return the string "1.2.3.4". Validation of the address is not performed, and the returned value may not be valid. More details on how the value is parsed and extracted can be found in the class description for ReceivedHeader.
Return values
string —getFromHostname()
Returns the hostname part of a parenthesized FROM part.
    public
                getFromHostname() : string
        For example, "FROM name (host.name)" would return the string "host.name". Validation of the hostname is not performed, and the returned value may not be valid. More details on how the value is parsed and extracted can be found in the class description for ReceivedHeader.
Return values
string —getFromName()
Returns the name identified in the FROM part of the header.
    public
                getFromName() : string
        The returned value may either be a name or an address in the form "[1.2.3.4]". Validation is not performed on this value, and so whatever exists in this position is returned -- be it contains spaces, or invalid characters, etc...
Return values
string —getName()
Returns the name of the header.
    public
                getName() : string
        
    
    
        Return values
string —getParts()
Returns an array of HeaderPart objects associated with this header.
    public
                getParts() : array<string|int, HeaderPart>
        
    
    
        Return values
array<string|int, HeaderPart> —getRawValue()
Returns the raw value of the header prior to any processing.
    public
                getRawValue() : string
        
    
    
        Return values
string —getValue()
Returns the raw, unparsed header value, same as {@see ReceivedHeader::getRawValue()}.
    public
                getValue() : string
        
    
    
        Return values
string —getValueFor()
Returns the value of the parameter with the given name, or $defaultValue if not set.
    public
                getValueFor(string $name[, string $defaultValue = null ]) : string
        
        Parameters
- $name : string
 - $defaultValue : string = null
 
Return values
string —hasParameter()
Returns true if a parameter exists with the passed name.
    public
                hasParameter(string $name) : bool
        
        Parameters
- $name : string
 
Return values
bool —getConsumer()
Returns a ReceivedConsumer.
    protected
                getConsumer(ConsumerService $consumerService) : AbstractConsumer
        
        Parameters
- $consumerService : ConsumerService
 
Return values
AbstractConsumer —setParseHeaderValue()
Overridden to assign comments to $this->comments, and the DateTime to $this->date.
    protected
                setParseHeaderValue(AbstractConsumer $consumer) : mixed
        
        Parameters
- $consumer : AbstractConsumer