- Модуль: 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;
}