Как создать форму с отправкой на почту и записью в инфоблок?
Это достаточно просто, если вас устроит стандартный функционал.
Есть простой компонент в битриксе. Называется "форма добавления и редактирования элементов".
joxi.ru/52aNjzZIRedxA0
Подключаете, настраиваете, в частности в какой инфоблок добавлять элемент.
Шаблон у него, конечно, не ахти. Скорее всего, нужно будет поменять. Но это уже другая задача.
С первой задачей справились.
Отправка письма.
Скопируйте стандартный компонент /bitrix/components/bitrix/iblock.element.add.form в папку /bitrix/components/my_components/
Надеюсь, знаете про правило никогда не редактировать стандатные компоненты. Править только скопированнный.
 Открываете файл component.php компонента iblock.element.add.form.
Ищите комментарий // add new element . Это один из редчайших файлов в битриксе, где есть комментарий. Ура!
Вставляете в условие
joxi.ru/12M7aYNTY1xBrJ
https://dev.1c-bitrix.ru/api_help/main/reference/c...
CEvent::SendImmediate
(
   $event, 
   $lid, 
   $arFields, 
   $Duplicate = "Y", 
   $message_id=""
) 
Если у вас нестандартный шаблон письма. Вам, скорее всего, нужно будет создать новые тип и шаблон почтового события. Но это, уже другая задача.
Все. Добавляйте элементы
Сделал все следующим образом:<?require_once($_SERVER['DOCUMENT_ROOT'].'/PHPMailer/class.phpmailer.php');
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

$mail_body = implode('/n', $_POST)

/*запись данных в инфоблок*/ 
$arLoadProductArray = Array( "MODIFIED_BY" => $USER->GetID(),
    "IBLOCK_SECTION_ID" => false,
    "IBLOCK_ID" => 24,
    "NAME" => $_POST['name_organization'],
    "ACTIVE" => "N",
    "DETAIL_TEXT" => $mail_body, 
    ); 
CModule::IncludeModule("iblock"); 
$element = new CIBlockElement; 
if($product_ID = $element->Add($arLoadProductArray)){ 
    
    /*отправка формы*/ 
    $mail = new PHPMailer;
    $mail->From = "no-replay@terrafrigo.ru";
    $mail->FromName = "no-replay";
    $mail->AddAddress('почта куда идут письма');

    $mail->isHTML(true);
    $mail->CharSet = 'UTF-8'; 
    $mail->Subject = 'тема письма'; 
    $mail->Body = $mail_body;

    if($mail->Send()){ 
        echo 'Отправлено';
    }
    echo 'Элемент записан ('.$product_ID.') '; 
}else{ 
    echo "Error: ".$element->LAST_ERROR.' '; 
}
Для отправки писем используется плагин - https://github.com/PHPMailer/PHPMailer