Вы задали много вопросов в одном посте.
Вот отличный пример:
<?
$el = new CIBlockElement;
$PROP = array();
$PROP[12] = "Белый"; // свойству с кодом 12 присваиваем значение "Белый"
$PROP[3] = 38; // свойству с кодом 3 присваиваем значение 38
$arLoadProductArray = Array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 18,
"PROPERTY_VALUES"=> $PROP,
"NAME" => "Элемент",
"ACTIVE" => "Y", // активен
"PREVIEW_TEXT" => "текст для списка элементов",
"DETAIL_TEXT" => "текст для детального просмотра",
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
);
if($PRODUCT_ID = $el->Add($arLoadProductArray))
echo "New ID: ".$PRODUCT_ID;
else
echo "Error: ".$el->LAST_ERROR;
?>
Создайте инфоблок, в нем свойства.
Создайте страницу, в ней форму с полями, при отправке формы делайте пост-запрос на страницу с кодом выше.
Вот пример для ajax
<script type="text/javascript">
$(function () {
$('#form_id').submit(function(e){
e.preventDefault();
var data = $(this).serialize();
$. ajax ({
url:'/ajax.php',
type:'post',
data:data,
success:function(res){
$('#result').html(res);
}
})
})
})
</script>
В ответ получите New ID.
Почту приделать можно через файл init.php, добавив действие по событию OnAfterIBlockElementAdd