Chernichko
@Chernichko
Учусь.

Как доработать почтовый шаблон в стандартном компоненте bitrix, чтобы отправить массив файлов?

Доработала стандартный компонент битрикс bitrix:main.feedback, он теперь прикрепляет несколько файлов.
Но я не понимаю как изменить почтовый шаблон?

component.php

for($i=0;$i<4;$i++){
	if( strlen($_FILES["file"]["tmp_name"][$i]) > 0 ) {	
		$arr_file=Array(
			"name" => $_FILES[file][name][$i],
			"size" => $_FILES[file][size][$i],
			"tmp_name" => $_FILES[file][tmp_name][$i],
			"type" => "",
			"old_file" => "",
			"del" => "Y",
			"MODULE_ID" => "iblock"
		);
	
		$fid = CFile::SaveFile($arr_file, "feedback");
		$fpath[] = CFile::GetPath($fid);
	
	}
}

...		

		if(empty($arResult["ERROR_MESSAGE"]))
		{
			$arFields = Array(
				"AUTHOR" => $_POST["user_name"],
				"AUTHOR_EMAIL" => $_POST["user_email"],
				"EMAIL_TO" => $arParams["EMAIL_TO"],
				"TEXT" => $_POST["MESSAGE"]
			);
			if(strlen($fpath)>0) {
				$arFields["FILE"] = $fpath;
			}
			if(strlen($_POST["MESSAGE"]) < 800){
				if(!empty($arParams["EVENT_MESSAGE_ID"]))
				{
					foreach($arParams["EVENT_MESSAGE_ID"] as $v)
						if(IntVal($v) > 0)
							CEvent::Send($arParams["EVENT_NAME"], SITE_ID, $arFields, "N", IntVal($v));
				}
				else
					CEvent::Send($arParams["EVENT_NAME"], SITE_ID, $arFields);
			}

...


почтовый шаблон
Автор: #AUTHOR#
E-mail автора: #AUTHOR_EMAIL#

Текст сообщения:
#TEXT#

Файл:
http://#SERVER_NAME##FILE#

Сообщение сгенерировано автоматически.


Доступные поля:

#AUTHOR# - Автор сообщения
#AUTHOR_EMAIL# - Email автора сообщения
#TEXT# - Текст сообщения
#EMAIL_FROM# - Email отправителя письма
#EMAIL_TO# - Email получателя письма
#FILE# - Ссылка на файл
#DEFAULT_EMAIL_FROM# - E-Mail адрес по умолчанию (устанавливается в настройках)
#SITE_NAME# - Название сайта (устанавливается в настройках)
#SERVER_NAME# - URL сервера (устанавливается в настройках)

А мне надо массив файлов прикрепить... или как торазделить и текстом его вставить, но тогда ссылки перестанут быть ссылками.

Как быть в этой не простой ситуации?
  • Вопрос задан
  • 1323 просмотра
Решения вопроса 1
@bx-coder
Попробуйте как-то так:
$server = \Bitrix\Main\Application::getInstance()->getContext()->getServer();
...
$fpath = '';
for($i=0;$i<4;$i++){
  if( strlen($_FILES["file"]["tmp_name"][$i]) > 0 ) {	
    $arr_file=Array(
      "name" => $_FILES[file][name][$i],
      "size" => $_FILES[file][size][$i],
      "tmp_name" => $_FILES[file][tmp_name][$i],
      "type" => "",
      "old_file" => "",
      "del" => "Y",
      "MODULE_ID" => "iblock"
    );
  
    $fid = CFile::SaveFile($arr_file, "feedback");
    $fpath .= ($server->getServerPort() == 443 ? 'https://' : 'http://').$server->getServerName().CFile::GetPath($fid).PHP_EOL;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@skyspirit
Добрый день. Помогите придуматься решение задачи:
1. На общем сетевом диске ращений в месяц обновляю файл. Файл имеет одинаковое название из раза в раз, условно, "400.pdf".
2. Сделки. Есть регулярный счет, к нему привязан шаблон письма, в который надо вставлять обновляемый файл на автоматической основе.
3. Файлы я заменяю через webdav подключение к общему диску.

Как реализовать автообновление файла в шаблоне?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы