MessageParser
Parses a mail mime message into its component parts. To invoke, call MailMimeParser::parse.
Tags
Table of Contents
- $partBuilderFactory : PartBuilderFactory
 - $partFactoryService : PartFactoryService
 - $lastLineSeparatorLength : int
 - __construct() : mixed
 - Sets up the parser with its dependencies.
 - parse() : Message
 - Parses the passed stream into a ZBateson\MailMimeParser\Message object and returns it.
 - read() : PartBuilder
 - Reads the message from the passed stream and returns a PartBuilder representing it.
 - readHeaders() : mixed
 - Reads header lines up to an empty line, adding them to the passed $partBuilder.
 - readPart() : mixed
 - Reads a part and any of its children, into the passed $partBuilder, either by calling readUUEncodedOrPlainTextMessage or readPartContent after reading headers.
 - readUUEncodedOrPlainTextMessage() : string
 - Reads content for a non-mime message. If there are uuencoded attachment parts in the message (denoted by 'begin' lines), those parts are read and added to the passed $partBuilder as children.
 - addRawHeaderToPart() : mixed
 - Ensures the header isn't empty and contains a colon separator character, then splits it and calls $partBuilder->addHeader.
 - findContentBoundary() : mixed
 - Reads lines from the passed $handle, calling $partBuilder->setEndBoundaryFound with the passed line until it returns true or the stream is at EOF.
 - readBoundaryLine() : string
 - Reads a line of 2048 characters. If the line is larger than that, the remaining characters in the line are read and discarded, and only the first part is returned.
 - readLine() : string
 - Reads a line of up to 4096 characters. If the line is larger than that, the remaining characters in the line are read and discarded, and only the first 4096 characters are returned.
 - readPartContent() : mixed
 - Reads content for a single part of a MIME message.
 
Properties
$partBuilderFactory
    protected
        PartBuilderFactory
    $partBuilderFactory
    
        
    
$partFactoryService
    protected
        PartFactoryService
    $partFactoryService
    
        
    
$lastLineSeparatorLength
    private
        int
    $lastLineSeparatorLength
     = 0
        
    
Methods
__construct()
Sets up the parser with its dependencies.
    public
                __construct(PartFactoryService $pfs, PartBuilderFactory $pbf) : mixed
        
        Parameters
- $pfs : PartFactoryService
 - $pbf : PartBuilderFactory
 
Return values
mixed —parse()
Parses the passed stream into a ZBateson\MailMimeParser\Message object and returns it.
    public
                parse(StreamInterface $stream) : Message
        
        Parameters
- $stream : StreamInterface
 - 
                    
the stream to parse the message from
 
Return values
Message —read()
Reads the message from the passed stream and returns a PartBuilder representing it.
    protected
                read(StreamInterface $stream) : PartBuilder
        
        Parameters
- $stream : StreamInterface
 
Return values
PartBuilder —readHeaders()
Reads header lines up to an empty line, adding them to the passed $partBuilder.
    protected
                readHeaders(resource $handle, PartBuilder $partBuilder) : mixed
        
        Parameters
- $handle : resource
 - 
                    
the resource handle to read from
 - $partBuilder : PartBuilder
 - 
                    
the current part to add headers to
 
Return values
mixed —readPart()
Reads a part and any of its children, into the passed $partBuilder, either by calling readUUEncodedOrPlainTextMessage or readPartContent after reading headers.
    protected
                readPart(resource $handle, PartBuilder $partBuilder) : mixed
        
        Parameters
- $handle : resource
 - $partBuilder : PartBuilder
 
Return values
mixed —readUUEncodedOrPlainTextMessage()
Reads content for a non-mime message. If there are uuencoded attachment parts in the message (denoted by 'begin' lines), those parts are read and added to the passed $partBuilder as children.
    protected
                readUUEncodedOrPlainTextMessage(resource $handle, PartBuilder $partBuilder) : string
        
        Parameters
- $handle : resource
 - $partBuilder : PartBuilder
 
Return values
string —addRawHeaderToPart()
Ensures the header isn't empty and contains a colon separator character, then splits it and calls $partBuilder->addHeader.
    private
                addRawHeaderToPart(string $header, PartBuilder $partBuilder) : mixed
        
        Parameters
- $header : string
 - $partBuilder : PartBuilder
 
Return values
mixed —findContentBoundary()
Reads lines from the passed $handle, calling $partBuilder->setEndBoundaryFound with the passed line until it returns true or the stream is at EOF.
    private
                findContentBoundary(resource $handle, PartBuilder $partBuilder) : mixed
        setEndBoundaryFound returns true if the passed line matches a boundary for the $partBuilder itself or any of its parents.
Once a boundary is found, setStreamPartAndContentEndPos is called with the passed $handle's read pos before the boundary and its line separator were read.
Parameters
- $handle : resource
 - $partBuilder : PartBuilder
 
Return values
mixed —readBoundaryLine()
Reads a line of 2048 characters. If the line is larger than that, the remaining characters in the line are read and discarded, and only the first part is returned.
    private
                readBoundaryLine(resource $handle, int &$lineSeparatorLength) : string
        This method is identical to readLine, except it calculates the number of characters that make up the line's new line characters (e.g. 2 for "\r\n" or 1 for "\n").
Parameters
- $handle : resource
 - $lineSeparatorLength : int
 
Return values
string —readLine()
Reads a line of up to 4096 characters. If the line is larger than that, the remaining characters in the line are read and discarded, and only the first 4096 characters are returned.
    private
                readLine(resource $handle) : string
        
        Parameters
- $handle : resource
 
Return values
string —readPartContent()
Reads content for a single part of a MIME message.
    private
                readPartContent(resource $handle, PartBuilder $partBuilder) : mixed
        If the part being read is in turn a multipart part, readPart is called on it recursively to read its headers and content.
The start/end positions of the part's content are set on the passed $partBuilder, which in turn sets the end position of the part and its parents.
Parameters
- $handle : resource
 - $partBuilder : PartBuilder