Судя по ошибке, ваша конфигурация php.ini для сервера smtp неверна.
Вы можете проверить это, попробовав запустить простой скрипт PHP:
<?php
mail("your_email", "Test", "test message")
?>
Это устраняет любые сомнения относительно данных, которые передаются вашей почтовой функции.
Теперь, кроме этого, в вашем коде есть несколько причуд:
Глядя на ваш jQuery, я вижу, что вы получаете сообщение с помощью "val ()". Это не работает в TextArea, если я правильно помню, поэтому может возникнуть проблема, если вы используете текстовую область для получения сообщения.
Я подозреваю, что в коде PHP эта часть работает не так, как вы ожидаете:
$values = array ('name','email','message');
...
foreach($values as $key => $value){
if(in_array($value,$required)){
if ($key != 'subject' && $key != 'company') {
...
Ваш массив не содержит ключей, поэтому внутренне ваш массив выглядит так:
[0]=>name;
[1]=>email...
Итак, в итоге вы получите if ( 0 != 'subject' && 0 != 'company') {...
Однако этот тест на самом деле бесполезен, потому что предыдущая строка уже проверяет, что ваше значение находится в требуемом массиве, а поскольку «субъект» и «компания» не находятся в требуемом массиве, эта строка никогда не будет истинной.
В данный момент ваш contact.php не использует данные, отправленные jQuery. Я предполагаю, что это специально, потому что вы просто тестируете, верно?
Другая проблема заключается в том, что вы вообще не проверяете свои данные. Ваша форма может быть использована для рассылки спама повсюду с использованием вашей учетной записи. Это потому, что ваша функция все еще находится на стадии тестирования?