Exemplo n.º 1
0
 public static function fromString($headerLine)
 {
     list($name, $value) = GenericHeader::splitHeaderLine($headerLine);
     $value = HeaderWrap::mimeDecodeValue($value);
     // check to ensure proper header type for this factory
     if (strtolower($name) !== 'sender') {
         throw new Exception\InvalidArgumentException('Invalid header name for Sender string');
     }
     $header = new static();
     /**
      * matches the header value so that the email must be enclosed by < > when a name is present
      * 'name' and 'email' capture groups correspond respectively to 'display-name' and 'addr-spec' in the ABNF
      * @see https://tools.ietf.org/html/rfc5322#section-3.4
      */
     $hasMatches = preg_match('/^(?:(?P<name>.+)\\s)?(?(name)<|<?)(?P<email>[^\\s]+?)(?(name)>|>?)$/', $value, $matches);
     if ($hasMatches !== 1) {
         throw new Exception\InvalidArgumentException('Invalid header value for Sender string');
     }
     $senderName = trim($matches['name']);
     if (empty($senderName)) {
         $senderName = null;
     }
     $header->setAddress($matches['email'], $senderName);
     return $header;
 }
 public static function fromString($headerLine)
 {
     list($fieldName, $fieldValue) = GenericHeader::splitHeaderLine($headerLine);
     $decodedValue = HeaderWrap::mimeDecodeValue($fieldValue);
     $wasEncoded = $decodedValue !== $fieldValue;
     $fieldValue = $decodedValue;
     if (strtolower($fieldName) !== static::$type) {
         throw new Exception\InvalidArgumentException(sprintf('Invalid header line for "%s" string', __CLASS__));
     }
     $header = new static();
     if ($wasEncoded) {
         $header->setEncoding('UTF-8');
     }
     // split value on ","
     $fieldValue = str_replace(Headers::FOLDING, ' ', $fieldValue);
     $fieldValue = preg_replace('/[^:]+:([^;]*);/', '$1,', $fieldValue);
     $values = str_getcsv($fieldValue, ',');
     array_walk($values, function (&$value) {
         $value = trim($value);
         $value = self::stripComments($value);
     });
     $values = array_filter($values);
     $addressList = $header->getAddressList();
     foreach ($values as $address) {
         $addressList->addFromString($address);
     }
     return $header;
 }
Exemplo n.º 3
0
 public static function fromString($headerLine)
 {
     $headerLine = iconv_mime_decode($headerLine, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8');
     list($name, $value) = GenericHeader::splitHeaderLine($headerLine);
     // check to ensure proper header type for this factory
     if (strtolower($name) !== 'content-type') {
         throw new Exception\InvalidArgumentException('Invalid header line for Content-Type string');
     }
     $value = str_replace(Headers::FOLDING, " ", $value);
     $values = preg_split('#\\s*;\\s*#', $value);
     $type = array_shift($values);
     //Remove empty values
     $values = array_filter($values);
     $header = new static();
     $header->setType($type);
     $values = array_filter($values);
     if (count($values)) {
         foreach ($values as $keyValuePair) {
             list($key, $value) = explode('=', $keyValuePair, 2);
             $value = trim($value, "'\" \t\n\r\v");
             $header->addParameter($key, $value);
         }
     }
     return $header;
 }
Exemplo n.º 4
0
 public static function fromString($headerLine)
 {
     list($name, $value) = GenericHeader::splitHeaderLine($headerLine);
     // check to ensure proper header type for this factory
     if (strtolower($name) !== 'received') {
         throw new Exception\InvalidArgumentException('Invalid header line for Received string');
     }
     $header = new static($value);
     return $header;
 }
Exemplo n.º 5
0
 public static function fromString($headerLine)
 {
     list($name, $value) = Header\GenericHeader::splitHeaderLine($headerLine);
     $value = Header\HeaderWrap::mimeDecodeValue($value);
     if (strtolower($name) !== 'x-queue-item-id') {
         throw new Header\Exception\InvalidArgumentException('Invalid header line for Message-ID string');
     }
     $header = new static();
     $header->setId($value);
     return $header;
 }
 public static function fromString($headerLine)
 {
     $headerLine = iconv_mime_decode($headerLine, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8');
     list($name, $value) = GenericHeader::splitHeaderLine($headerLine);
     // check to ensure proper header type for this factory
     if (strtolower($name) !== 'content-transfer-encoding') {
         throw new Exception\InvalidArgumentException('Invalid header line for Content-Transfer-Encoding string');
     }
     $header = new static();
     $header->setTransferEncoding($value);
     return $header;
 }
Exemplo n.º 7
0
 public static function fromString($headerLine)
 {
     list($name, $value) = GenericHeader::splitHeaderLine($headerLine);
     $value = HeaderWrap::mimeDecodeValue($value);
     // check to ensure proper header type for this factory
     if (strtolower($name) !== 'subject') {
         throw new Exception\InvalidArgumentException('Invalid header line for Subject string');
     }
     $header = new static();
     $header->setSubject($value);
     return $header;
 }
 public static function fromString($headerLine)
 {
     list($fieldName, $fieldValue) = GenericHeader::splitHeaderLine($headerLine);
     $decodedValue = HeaderWrap::mimeDecodeValue($fieldValue);
     $wasEncoded = $decodedValue !== $fieldValue;
     $fieldValue = $decodedValue;
     if (strtolower($fieldName) !== static::$type) {
         throw new Exception\InvalidArgumentException(sprintf('Invalid header line for "%s" string', __CLASS__));
     }
     $header = new static();
     if ($wasEncoded) {
         $header->setEncoding('UTF-8');
     }
     // split value on ","
     $fieldValue = str_replace(Headers::FOLDING, ' ', $fieldValue);
     $values = explode(',', $fieldValue);
     array_walk($values, function (&$value) {
         $value = trim($value);
     });
     $addressList = $header->getAddressList();
     foreach ($values as $address) {
         // split values into name/email
         if (!preg_match('/^((?P<name>.*?)<(?P<namedEmail>[^>]+)>|(?P<email>.+))$/', $address, $matches)) {
             // Should we raise an exception here?
             continue;
         }
         $name = null;
         if (isset($matches['name'])) {
             $name = trim($matches['name']);
         }
         if (empty($name)) {
             $name = null;
         }
         if (isset($matches['namedEmail'])) {
             $email = $matches['namedEmail'];
         }
         if (isset($matches['email'])) {
             $email = $matches['email'];
         }
         $email = trim($email);
         // we may have leading whitespace
         // populate address list
         $addressList->add($email, $name);
     }
     return $header;
 }
Exemplo n.º 9
0
 public static function fromString($headerLine)
 {
     list($name, $value) = GenericHeader::splitHeaderLine($headerLine);
     $value = HeaderWrap::mimeDecodeValue($value);
     // check to ensure proper header type for this factory
     if (strtolower($name) !== 'sender') {
         throw new Exception\InvalidArgumentException('Invalid header line for Sender string');
     }
     $header = new static();
     $senderName = '';
     $senderEmail = '';
     // Check for address, and set if found
     if (preg_match('/^(?P<name>.*?)<(?P<email>[^>]+)>$/', $value, $matches)) {
         $senderName = trim($matches['name']);
         if (empty($senderName)) {
             $senderName = null;
         }
         $senderEmail = $matches['email'];
     }
     $header->setAddress($senderEmail, $senderName);
     return $header;
 }
Exemplo n.º 10
0
 public static function fromString($headerLine)
 {
     list($name, $value) = GenericHeader::splitHeaderLine($headerLine);
     $value = HeaderWrap::mimeDecodeValue($value);
     // check to ensure proper header disposition for this factory
     if (strtolower($name) !== 'content-disposition') {
         throw new InvalidArgumentException('Invalid header line for Content-Disposition string');
     }
     $value = str_replace(Headers::FOLDING, ' ', $value);
     $values = preg_split('#\\s*;\\s*#', $value);
     $disposition = array_shift($values);
     $header = new static();
     $header->setDisposition($disposition);
     // Remove empty values
     $values = array_filter($values);
     foreach ($values as $keyValuePair) {
         list($key, $value) = explode('=', $keyValuePair, 2);
         $value = trim($value, "'\" \t\n\r\v");
         $header->addParameter($key, $value);
     }
     return $header;
 }
Exemplo n.º 11
0
 public static function fromString($headerLine)
 {
     $decodedLine = iconv_mime_decode($headerLine, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8');
     list($name, $value) = GenericHeader::splitHeaderLine($decodedLine);
     // check to ensure proper header type for this factory
     if (strtolower($name) !== 'sender') {
         throw new Exception\InvalidArgumentException('Invalid header line for Sender string');
     }
     $header = new static();
     if ($decodedLine != $headerLine) {
         $header->setEncoding('UTF-8');
     }
     // Check for address, and set if found
     if (preg_match('/^(?P<name>.*?)<(?P<email>[^>]+)>$/', $value, $matches)) {
         $name = $matches['name'];
         if (empty($name)) {
             $name = null;
         } else {
             $name = iconv_mime_decode($name, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8');
         }
         $header->setAddress($matches['email'], $name);
     }
     return $header;
 }
Exemplo n.º 12
0
 public static function fromString($headerLine)
 {
     $decodedLine = iconv_mime_decode($headerLine, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8');
     // split into name/value
     list($fieldName, $fieldValue) = GenericHeader::splitHeaderLine($decodedLine);
     if (strtolower($fieldName) !== static::$type) {
         throw new Exception\InvalidArgumentException(sprintf('Invalid header line for "%s" string', __CLASS__));
     }
     $header = new static();
     if ($decodedLine != $headerLine) {
         $header->setEncoding('UTF-8');
     }
     // split value on ","
     $fieldValue = str_replace(Headers::FOLDING, ' ', $fieldValue);
     $values = str_getcsv($fieldValue, ',');
     array_walk($values, function (&$value) {
         $value = trim($value);
     });
     $addressList = $header->getAddressList();
     foreach ($values as $address) {
         $addressList->addFromString($address);
     }
     return $header;
 }
Exemplo n.º 13
0
 /**
  * Create Header object from header line
  *
  * @param string $headerLine
  * @return Header\HeaderInterface|Header\HeaderInterface[]
  */
 public function loadHeader($headerLine)
 {
     list($name, ) = Header\GenericHeader::splitHeaderLine($headerLine);
     $class = $this->getPluginClassLoader()->load($name) ?: Header\GenericHeader::class;
     return $class::fromString($headerLine);
 }