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

	if (is_set($arFields, "NEW_MESSAGE") && $arFields["NEW_MESSAGE"] != "N")
		$arFields["NEW_MESSAGE"]="Y";

	if (is_set($arFields, "FULL_TEXT") && !is_set($arFields, "MESSAGE_SIZE"))
		$arFields["MESSAGE_SIZE"] = mb_strlen($arFields["FULL_TEXT"]);

	if (!is_set($arFields, "DATE_INSERT"))
		$arFields["~DATE_INSERT"] = $DB->GetNowFunction();

	if (is_set($arFields, "FIELD_DATE_ORIGINAL") && !is_set($arFields, "FIELD_DATE"))
	{
		$datetime = preg_replace('/(?<=[sd])UT$/i', '+0000', $arFields['FIELD_DATE_ORIGINAL']);
		$timestamp = strtotime($datetime) ?: time();
		$arFields['FIELD_DATE'] = convertTimeStamp($timestamp + CTimeZone::getOffset(), 'FULL');
	}

	if (array_key_exists('SUBJECT', $arFields))
	{
		$arFields['SUBJECT'] = strval(mb_substr($arFields['SUBJECT'], 0, 255));
	}

	if (array_key_exists('OPTIONS', $arFields))
	{
		$arFields['OPTIONS'] = serialize($arFields['OPTIONS']);
	}

	$params = $DB->PrepareInsert("b_mail_message", $arFields);
	$sql = sprintf("INSERT INTO b_mail_message (%s) VALUES (%s)", $params[0], $params[1]);
	$length = BinaryString::getLength($sql);

	if (!CMailUtil::IsSizeAllowed($length))
	{
		$limit =  BitrixMainApplication::getConnection()->getMaxAllowedPacket() - 1;
		$trimLength = $length - $limit;
		self::trimContent($arFields, $trimLength, [['BODY_HTML', 'BODY'], 'SEARCH_CONTENT', 'HEADER']);

		$params = $DB->PrepareInsert("b_mail_message", $arFields);
		$sql = sprintf("INSERT INTO b_mail_message (%s) VALUES (%s)", $params[0], $params[1]);
	}

	$DB->Query($sql, false, "File: " . __FILE__ . "
Line: " . __LINE__); $ID = intval($DB->LastID()); static::saveForDeferredDownload($ID, $arFields, $mailboxID); return $ID; }