Битрикс отправка письма с вложением с формы.

Находим форму. Если сделан инфоблоками — это компонент iblock.element.add.form. Кастомизируем. Для этого добавляем пространство имен, копируем компонент и подключаем его уже как namespace:iblock.element.add.form. Или просто копируем в папку local/bitrix/components/
В коде component.php находим строки где идет добавление элемента инфоблока.


	
	// add new element
	$sAction = "ADD";

Там у нас входной массив с данными формы, ошибки, если есть, при проверке этих данных, а также массив вложенных файлов.
Для интереса можем все это логировать.


	

				// file_put_contents($_SERVER['DOCUMENT_ROOT'].'/upload/form.txt', var_export($arUpdateValues, true), FILE_APPEND);
				// file_put_contents($_SERVER['DOCUMENT_ROOT'].'/upload/form.txt', var_export($arResult["ERRORS"], true), FILE_APPEND);
				// file_put_contents($_SERVER['DOCUMENT_ROOT'].'/upload/form.txt', var_export($_FILES, true), FILE_APPEND);

Картинку перед отправкой письма надо будет сохранить у себя , а затем можно удалить. Письмо отправляем методом CEvent::SendImmediate, для которого создадим почтовое событие в админке.
Настройки — Типы почтовых событий.
Добавляем к нему шаблон с параметрами


	
Имя: #NAME#
Текcт отзыва: #COMMENT#
Email: #EMAIL# 

Эти поля мы получим из входного массива.


					// отправляю письмо
				if (empty($arResult["ERRORS"])) {
					$filePath = $arUpdateValues['PREVIEW_PICTURE']['tmp_name'];
					$fileId = CFile::SaveFile(
					  array(
					    "name" => $arUpdateValues['PREVIEW_PICTURE']['name'],           // имя файла, как оно будет в письме
					    "size" => $arUpdateValues['PREVIEW_PICTURE']['size'],   // работает и без указания размера
					    "tmp_name" => $filePath,            // собственно файл
					    // "type" => "",                    // тип, не ясно зачем
					    "old_file" => "0",                  // ID "старого" файла
					    "del" => "N",                       // удалять прошлый?
					    "MODULE_ID" => "",                  // имя модуля, работает и так
					    "description" => "",                // описание
					    // "content" => "содержимое файла"  // если указать, то вместо файла будет указанный текст
					  ),
					  'mails',  // относительный путь от upload, где будут храниться файлы
					  false,    // ForceMD5
					  false     // SkipExt
					);

					
					$arFields = array(
					    "NAME"             => $arUpdateValues['NAME'],
					    "COMMENT"            => $arUpdateValues['PREVIEW_TEXT'],
					    "EMAIL" => $arUpdateValues['PROPERTY_VALUES'][132]
					    );

					CEvent::SendImmediate(
					   'YF_REVEW', 
					   's1', 
					   $arFields, 
					   $Duplicate = "N",
					   '',
					   [$fileId]
				   );
					CFile::Delete($fileId);
				}

Leave a comment

Your email address will not be published.


*