Если так:
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.