• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/message.php
  • Класс: BitrixMailMessage
  • Вызов: Message::scoreFullHead
protected function scoreFullHead(&$head)
{
	$score = 0;

	if (preg_match_all('/^([^:n]{1,20}):[tx20]+(.+)$/m'.BX_UTF_PCRE_MODIFIER, $head, $matches, PREG_SET_ORDER))
	{
		$subject = array(
			'value'  => $this->subject,
			'strlen' => mb_strlen($this->subject),
			'sgnlen' => mb_strlen(trim($this->subject))
		);

		$isHeader = function($key, $value) use (&$subject)
		{
			if (mb_strlen(trim($value)) >= 10 && $subject['sgnlen'] >= 10)
			{
				$dist = $subject['strlen'] - mb_strlen($value);

				if (abs($dist) < 10)
				{
					if ($dist >= 0 && mb_strpos($subject['value'], $value) !== false)
					{
						return true;
					}

					if (max($subject['strlen'], mb_strlen($value)) < 256 && levenshtein($subject['value'], $value) < 10)
					{
						return true;
					}
				}
			}

			$date = preg_replace('/(?<=[sd])UT$/i', '+0000', trim($value));
			if (preg_match('/d{1,2}:d{2}(:d{2})?x20?(am|pm)?/i', $date) && strtotime($date) !== false)
			{
				return true;
			}

			if (preg_match('/([a-zd_](.?[a-zd_-]+)*)?[a-zd_]@(([a-zd][a-zd-]*)?[a-zd].?)+/i', $value))
			{
				return true;
			}

			return false;
		};

		foreach ($matches as $item)
		{
			$score += (int) $isHeader($item[1], $item[2]);
		}
	}

	return $score;
}