Если так:
defined( '_JEXEC' ) or die;
то на клиенте должно быть так:
success: function(data) {
if(!!data) $(result).html(data); // Вывод текста результата отправки
else alert('Мол фигушки вам'); //нельзя оставлять клиента в неведении
}
Это $post = (!empty($_POST)) ? true : false; полнейшая глупость, ибо empty($_POST) и возвращает булево значение, а ! это всего лишь его инвертирование. Выбросить, и проще:
if(!empty($_POST)) { //или просто if($_POST) ибо это суперглобальный массив, который всегда есть, но пустой, если не было POST запросов
//здесь операции
//а выдача ответа клиенту с выходом!!!
//if($send) {echo 'OK';} - убрать
//else {echo '<div class="err">'.$error.'</div>';} - убрать
//ответ клиенту
exit(!$error ? 'OK' : '<div class="err">'.$error.'</div>');
}
И да, почтовые отправления так не оформляют, читайте рекомендации RFC.