• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/classes/general/mail.php
  • Класс: CAllMailMessage
  • Вызов: CAllMailMessage::MarkAsSpam
static function MarkAsSpam($ID, $bIsSPAM = true, $arRow = false)
{
	global $DB;
	$res = null;

	if(!is_array($arRow))
		$res = $DB->Query("SELECT SPAM, HEADER, BODY_HTML, BODY, MAILBOX_ID FROM b_mail_message WHERE ID=".intval($ID));
	else
		$ar = $arRow;

	if(is_array($arRow) || $res && ($ar = $res->Fetch()))
	{
		if (empty($ar['FOR_SPAM_TEST']))
		{
			$ar['FOR_SPAM_TEST'] = sprintf('%s %s', $ar['HEADER'], $ar['BODY_HTML'] ?: $ar['BODY'] );
		}

		if($bIsSPAM)
		{
			if($ar["SPAM"]!="Y")
			{
				if($ar["SPAM"]=="N")
					CMailFilter::DeleteFromSpamBase($ar["FOR_SPAM_TEST"], false);
				CMailFilter::MarkAsSpam($ar["FOR_SPAM_TEST"], true);
				CMailMessage::Update($ID, Array("SPAM"=>"Y"));

				CMailLog::AddMessage(
					Array(
						"MAILBOX_ID"=>$ar["MAILBOX_ID"],
						"MESSAGE_ID"=>$ID,
						"LOG_TYPE"=>"SPAM"
						)
				);
			}
		}
		else
		{
			if($ar["SPAM"]!="N")
			{
				if($ar["SPAM"]=="Y")
					CMailFilter::DeleteFromSpamBase($ar["FOR_SPAM_TEST"], true);
				CMailFilter::MarkAsSpam($ar["FOR_SPAM_TEST"], false);
				CMailMessage::Update($ID, Array("SPAM"=>"N"));

				CMailLog::AddMessage(
					Array(
						"MAILBOX_ID"=>$ar["MAILBOX_ID"],
						"MESSAGE_ID"=>$ID,
						"LOG_TYPE"=>"NOTSPAM"
						)
				);
			}
		}
		$DB->Query("UPDATE b_mail_message SET SPAM_LAST_RESULT='N' WHERE ID=".intval($ID));
	}
}