Во-первых, вы повторно добавляете файлы при отправке формы. Этот код:
jQuery.each(jQuery('#file')[0].files, function(i, name) {
data.append('attachfile[]', name);
});
вообще не нужен, файлы уже есть в data.
Во-вторых, покажите нормальный код на PHP, и что именно он присылает. Ваш код не может работать из-за этого:
} $filename = "./uploads/". $_FILES['attachfile']["name"];
$mail->addAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
(видимо, какие-то артефакты предыдущих попыток).
Без этого, код в целом выглядит рабочим. Выведите в лог (или прямо в браузер) массив $_FILES или $mail->getAttachments(), и посмотрите, все ли правильно аттачится.