Отправить файл (pdf) из свойства элемента по клику

При формировании файла и сохранении его в свойство элемента "на лету", может также понадобится возможность его отправки по почте. Описание момента создания такого файла есть в заметке

Файл-обработчик отправки письма с фалом на почту по клику выглядит следующим образом: 

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Main\Loader;
use Bitrix\Main\Mail\Event;
if (CModule::IncludeModule("iblock") && CModule::IncludeModule("main")) {

if(isset($_POST['email']) && !empty($_POST['email'])) {
$data = array();
$text = "";

$arFilter = array("IBLOCK_ID" => 1, "ID" => $_SESSION['PRODUCT_ID']);
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_*");
$res = CIBlockElement::GetList(array("ID" => "DESC"), $arFilter, false, array("nTopCount" => 1), $arSelect);
if ($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields(); // поля элемента
$arProp = $ob->GetProperties(); // свойства элемента
$name = $arFields["NAME"];
$file = $arProp["ATT_PDF_FILE"]["VALUE"];
$path = CFile::GetPath($arProp["ATT_PDF_FILE"]["VALUE"]); // путь к файлу
}


if ($file) {
Event::sendImmediate(array(
"EVENT_NAME" => "SEND_ARTICLE_PDF_FILE",
"LID" => "s1",
"C_FIELDS" => array(
"PDF_NAME" => $name,
"USER_MAIL" => $_POST['email'] // Это используем в поле "Кому"
),
"FILE" => array($file),
));
}

$data['message'] = "Результат отправлен на почту";
header('Content-Type: application/json');
echo json_encode($data);
}

}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>

То есть в первую очередь, мы получаем из необходимого элемента ($_SESSION['PRODUCT_ID']) поля с именем и файлом. И далее с помощью метода sendImmediate класса Event отправляем файл на почту $_POST['email'].

bitrixone © 2024