@Katsuro19

Как отправить письмо на почту с файлом AJAX?

Код формы
<div class="popap-questionnaire">
		<h1>ЗАПОЛНИТЕ АНКЕТУ</h1>
		<a href="#close" class="close-questionnaire" title="Закрыть">Закрыть вкладку</a>
		<form action="mail.php" method="POST" enctype="multipart/form-data" id="popap-questionnaire">
			<input type="text" name="user_name" class="popap-questionnaire-input name" placeholder="Фамилия Имя">
			<input type="text" name="user_city" class="popap-questionnaire-input city" placeholder="Город проживания">
			<input type="text" name="user_mail" class="popap-questionnaire-input mail" placeholder="Ваш e-mail">
			<input type="text" name="user_phone" class="popap-questionnaire-input phone" placeholder="Ваш контактный телефон">
			<div class="popap-questionnaire-file">
			    <div class="popap-questionnaire-file-input">
			    	<label for="file-input">
				       <p>Перетащите или <span>загрузите резюме/портфолио</span></p>
				    </label>
			    </div>
			    <input id="file-input" type="file" name="upload">
			</div>
			<input type="text" name="user_link" class="link" placeholder="Ссылка на ваш профиль в соц. сетях или портфолио">
			<input type="hidden" name="questionnaire-name" id="questionnaire-name" value="">
			<button type="submit" class="btn-form" id="submit">Отправить</button>
		</form>
		<hr>
		<label class="container-checkbox">
            <input class="checkbox" type="checkbox" name="checkbox-test">
            <span class="checkbox-custom"></span>
            <p class="policy">Я согласен с <a href="#policy" class="policy-btn">с уловием передачи данных</a></p>
        </label>
	</div>

Форма с библиотеки PHPmailer
<?php 

require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';

$name = $_POST['user_name'];
$city = $_POST['user_city'];
$email = $_POST['user_mail'];
$phone = $_POST['user_phone'];
$link = $_POST['user_link'];
$vacancy = $_POST['questionnaire-name'];

//$mail->SMTPDebug = 6;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.mail.ru';  																							// Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = '1926@mail.ru'; // Ваш логин от почты с которой будут отправляться письма
$mail->Password = '2456'; // Ваш пароль от почты с которой будут отправляться письма
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to / этот порт может отличаться у других провайдеров

$mail->setFrom('1926@mail.ru'); // от кого будет уходить письмо?
$mail->addAddress('2016@mail.ru');     // Кому будет уходить письмо 
//$mail->addAddress('ellen@example.com');               // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment($_FILES['upload']['tmp_name'], $_FILES['upload']['name']);    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Заявка с тестового сайта';
$mail->Body    = '' .$name . ' оставил заявку<br>Город: '   .$city. '<br>Почта: ' .$email. '<br>Номер: ' .$phone. '<br> Ссылка на соц сеть: ' .$link. '<br>Вакансия: ' .$vacancy ;
$mail->AltBody = '';

if(!$mail->send()) {
    echo 'Error';
} else {
    header('location: thank-you.html');
}
?>

Как реализовать отправку этой формы файлом с помощью AJAX?
  • Вопрос задан
  • 351 просмотр
Пригласить эксперта
Ответы на вопрос 2
@sidni
Php Developer
Попробуйте так
$("form").submit(function(e){
    e.preventDefault();    
    var formData = new FormData(this);
    $.ajax({
        url: $(this).attr('action'),
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});
Ответ написан
@lloydbanks
$("#popap-questionnaire").submit(function(e){
    e.preventDefault();    
    var $this = $(this);

    $.ajax({
        url: $this.attr('action'),
        type: $this.attr('method'),
        data: $this.serialize(),
        success: function (data) {
           $this.html(data)
        }
    });
});

header('location: thank-you.html');
Редирект в аяксовой форме, серьезно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы