• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/mail/eventmessagecompiler.php
  • Класс: BitrixMainMailEventMessageCompiler
  • Вызов: EventMessageCompiler::setMailAttachment
protected function setMailAttachment()
{
	$eventMessageAttachment = [];
	$eventFilesContent = [];

	// Attach files from message template
	if(array_key_exists('FILE', $this->eventMessageFields))
	{
		$eventMessageAttachment = $this->eventMessageFields["FILE"];
	}

	if(array_key_exists('FILES_CONTENT', $this->event))
	{
		$eventFilesContent = $this->event["FILES_CONTENT"];
	}

	// Attach files from event
	if(isset($this->event["FILE"]) && is_array($this->event["FILE"]))
	{
		$eventFileList = array();
		foreach($this->event["FILE"] as $fileId)
		{
			if(is_numeric($fileId))
			{
				$eventFileList[] = $fileId;
			}
		}

		$eventMessageAttachment = array_merge($eventMessageAttachment, $eventFileList);
	}


	if(!empty($eventMessageAttachment))
	{
		$attachFileList = array();
		$eventMessageAttachment = array_unique($eventMessageAttachment);

		$strId = implode(',', $eventMessageAttachment);
		$conn = BitrixMainApplication::getConnection();
		$strSql = "SELECT * FROM b_file WHERE ID IN(".$strId.")";
		$resultDb = $conn->query($strSql);
		while($file = $resultDb->fetch())
		{
			$tempFile = CFile::MakeFileArray($file["ID"]);
			$attachFileList[] = array(
				'PATH' => $tempFile['tmp_name'],
				'ID' => $file['ID'],
				'CONTENT_TYPE' => $file['CONTENT_TYPE'],
				'NAME' => ($file['ORIGINAL_NAME'] <> "" ? $file['ORIGINAL_NAME'] : $file['FILE_NAME']),
			);
		}

		$this->mailAttachment = $attachFileList;
	}

	if (!empty($eventFilesContent))
	{
		foreach ($eventFilesContent as $item)
		{
			$this->mailAttachment[] = [
				'CONTENT_TYPE' => $item['CONTENT_TYPE'],
				'NAME' => $item['NAME'],
				'CONTENT' => $item['CONTENT'],
				'ID' => $item['ID'],
				'CHARSET' => $item['CHARSET'],
				'METHOD' => $item['METHOD'],
			];
		}
	}
}