PHPMailer () AJAX-запрос

В моем стремлении проверить форму с помощью PHP и $ .ajax () и отправить письмо на мой собственный почтовый адрес, указав в качестве отправителя мой собственный адрес Gmail, указав имя пользователя и адрес электронной почты из формы. В основном я хочу, чтобы сайт уведомил меня о том, что пользователь оставил мне сообщение вместе со своим именем и адресом, если я могу ответить ему. Когда я пытаюсь отправить, я получаю сообщение об ошибке.
Я взял скрипт из примера PHPMailer, но не могу понять, где должно быть тело письма. У меня есть файл php:

<?php

error_reporting(E_ALL);
ini_set('display_errors',true);

// require_once ‘class.phpmailer.php’;
require ‘PHPMailerAutoload.php’;

sleep(1);

$mail_reg = '/^(?i)(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\  [[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/';

$return = array();
$mesaj = '';if ($_SERVER['REQUEST_METHOD'] === 'POST') {if (empty($_POST['inputName']) || is_numeric($_POST['inputName'])) {

$mesaj = "Please enter your name!";
// $return['error'] = true;
$return['msg'] = 'oops'.$mesaj;
echo json_encode($return);
exit();

} elseif (empty($_POST['inputEmail']) || !preg_match($mail_reg,   $_POST['inputEmail'])) {

$mesaj = "Please enter your e-mail!";
//  $return['error'] = true;
$return['msg'] = 'oops'.$mesaj;
echo json_encode($return);
exit();

} elseif (empty($_POST['inputMess'])) {

$mesaj = "Please tell us something";
// $return['error'] = true;
$return['msg'] = 'oops'.$mesaj;
echo json_encode($return);
exit();

} else {

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug  = 2;
$mail->Debugoutput = 'html';
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->SMTPSecure = "tls";
$mail->SMTPAuth   = true;
$mail->Username = "tavitudor124@gmail.com";
$mail->Password = "**********";
$mail->SetFrom('tavitudor124@gmail.com' , 'First Last');
$mail->Subject = $_POST['inputName'].'/'.$_POST['inputEmail'].'wrote';
//$mail->MsgHTML($body);
$address = 'tavi_tudor@yahoo.com';
$mail->AddAddress($address, "John Doe");
$mail->Body = $_POST['inputMess'];

if (!$mail->Send()) {
$mesaj = 'The message cannot be delivered, please try again later!';
$return['msg'] = 'The message cannot be delivered, please try again later!';
echo json_encode($return);
exit();

} else {

$mesaj = 'Thank you for getting in touch. We will contact you!';
// $return["error"] = false;
$return["msg"] = 'Thank you for getting in touch. We will contact you! '.$mail-  >ErrorInfo;
echo json_encode($return);
exit();
}
}
}?>

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>NRDC Environmental N.G.O.</title>
<link href="css/bootstrap.css" rel="stylesheet">

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>

<script src="js/bootstrap.min.js"></script>
<script src="js/marin.js"></script>
</head>

<div class="site-wrapper">

<div class="site-wrapper-inner">

<div class="cover-container">

<div class="masthead clearfix">
<div class="inner">
<h3 class="masthead-brand">NRDC<br />Save our Planet  O.N.G.</h3>
<ul class="nav masthead-nav">
<li><a href="index.html">Home</a></li>
<li><a href="gallery.html">Gallery</a></li>
<li class="active"><a href="contact.php">Contact</a></li>
<li><a href="#">Join Us</a></li>
</ul>
</div>
</div>

<div class="inner cover">
<div class="row">
<div class="col-xs-12" style="text-align:center;font-size:22px;">

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div class="form-group">
<label for="inputName">Your name</label>
<input type="text" name="inputName" class="form-control"   id="inputName" placeholder="Name">
</div>

<div class="form-group">
<label for="inputEmail">Your e-mail</label>
<input type="text" name="inputEmail" class="form-control" id="inputEmail" placeholder="E-mail">
</div>

<div class="form-group">
<label for="inputMess">Your message for us</label>
<textarea name="inputMess" class="form-control" id="inputMess">  </textarea>
</div>

<button type="submit" name="send" class="btn btn-default">Send</button>
</form>

<div id='mess'> </div>

</div></div></div>

<div class="mastfoot">
<div class="inner">
<p id="footer">©All rights reserved to NRDC, by TaoAppz</p>
</div>
</div>

</div>

</div>

</div>

JS

$(document).ready(function() {

var email_reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i;

$('form').submit(function(event) {

event.preventDefault();

if ($('#inputName').val() == '' || $('#inputName').val().length < 2 || !isNaN($('#inputName').val())) {

alert('Please enter your name');

} else if (!email_reg.test($('#inputEmail').val())) {

alert('Please enter a valid e-mail adress');

} else if ($('#inputMess').val() == '' || !isNaN($('#inputMess').val())) {

alert('Please tell us something');

} else {

var formData = $('form').serialize();
submitForm(formData);

}

})function submitForm(formData) {

$.ajax({

type: 'POST',
url: $('form').action,
data: formData,
dataType: 'json',
cache: false,
timeout: 7000,
beforeSend: function() {

$('#mess').text('Processing...');

},
success: function(data) {$('#mess').text(data.msg);

},
error: function(XMLHttpRequest, textStatus, errorThrown) {$('#mess').text('Error! ' + textStatus + ' ' + errorThrown  + ' ' + 'Please try again later!');

},
complete: function(XMLHttpRequest, status) {

//$('form')[0].reset();}

})
}})

1

Решение

Это было моей ошибкой при включении в php, и ‘$ mail-> Debugoutput =’ html ‘создал вывод html, который был вставлен как JSON.

Поэтому я взял режим отладки из PHPMailer, и теперь у меня есть хорошая рабочая контактная форма, использующая ajax и PHPMailer. Спасибо за вашу помощь

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector