Здравствуйте.
Помогите, пожалуйста, с отправкой письма с вложением. Пытаюсь сделать через formData. Сама отправка срабатывает нормально, все отправляется, письмо доходит. Но вместо того, чтобы после нажатия на кнопку "отправить" появлялось сообщение об успешной отправке, страница перезагружается.
Вот код:
Форма отправки:
<form action method="post" name="calcprojectform1" id="calcprojectform1" enctype='multipart/form-data'>
<input class="pole validate[required]" data-prompt-position="Left:-65,35" name="name" type="text" placeholder="Имя" /><br><br>
<input class="pole validate[required]" data-prompt-position="Left:-65,35" name="phone" type="text" placeholder="Телефон" /><br><br>
<input class="pole validate[required,custom[email]]" data-prompt-position="Left:-65,35" name="mail" type="text" placeholder="Ваш e-mail" /><br><br>
<input class="pole" type='file' name='mail_file' data-prompt-position="Left:-65,35"/><br><br>
<input class="mainButton_form" name="calc-project-submit1" id="calc-project-submit1" type="submit" value="получить">
</form>
Скрипт обработки
$(document).on('click', 'input[name="calc-project-submit1"]', function () {
if ($('form[name="calcprojectform1"]').validationEngine('validate'))
{
var form = document.forms.namedItem("calcprojectform1");
var formData = new FormData(form);
var xhr = new XMLHttpRequest();
xhr.open("POST", "mail.php");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
data = xhr.responseText;
if (data == '1') {
$("#calcprojectform1").reset();
$("#calcprojectform1").replaceWith('<div style="padding:15px;background:#fff; font-size:14px;font-family:MuseoSansCyrl_700; color:green;">Спасибо, ваша заявка успешно отправлена.</div>');
style="padding:15px;background:#fff; font-size:14px;font-family:MuseoSansCyrl_700; color:green;">Спасибо, ваша заявка успешно отправлена.</div>')
} else {
$('#calc-project-submit1').validationEngine('showPrompt', 'Ошибка отправки данных. Попробуйте позже.');
}
}
}
};
xhr.send(formData);
}
});
Файл отправки php
<?php
$mailto = "test@yandex.ru";
$charset = "utf-8";
$subject = "Заполнили форму Рассчитать проект";
$content = "text/html";
$status = "<br>";
if (!empty($_POST)) {
$name = htmlspecialchars(stripslashes($_POST['name']));
$email = htmlspecialchars(stripslashes($_POST['mail']));
$phone = htmlspecialchars(stripslashes($_POST['phone']));
$picture = "";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: \"" . $name . "\" <test@yandex.ru>\r\n";
$headers .= "Bcc: test@yandex.ru\r\n";
$headers .= "X-Mailer: E-mail from my site \r\n";
$sendmessage = "<html><body>
<p><b>Имя:</b> " . $name . "</p>
<p><b>Телефон:</b> " . $phone . "</p>
<p><b>E-mail:</b> " . $email . "</p>
</body></html>";
if (!empty($_FILES['mail_file']['tmp_name'])) {
$path = $_FILES['mail_file']['tmp_name'];
$picture = $_FILES['mail_file']['name'];
}
$boundary = "--" . md5(uniqid(time()));
$headers .="Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\n";
$multipart .= "--" . $boundary . "\n";
$multipart .= "Content-Type: text/html; charset=$charset\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$multipart .= "$sendmessage\n\n";
$message_part = '';
$fp = fopen($path, "r");
if (!$fp) {
print "Файл " . $path . " не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$message_part .= "--" . $boundary . "\n";
$message_part .= "Content-Type: application/octet-stream\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"" . $picture . "\"\n\n";
$message_part .= chunk_split(base64_encode($file)) . "\n";
$multipart .= $message_part . "--" . $boundary . "--\n";
if (mail($mailto, $subject, $multipart, $headers)) {
echo '1';
} else {
echo '2';
}
}
?>