PHPMailer 5.2.0 отправляет 2 письма каждый раз
Во-первых; извините, если это было сказано раньше, я искал в течение последних двух дней без успеха.
Я использую PHPMailer 5.2.0 для отправки почты из формы, которая вызывается вызовом AJAX из скрипта jQuery с помощью jQuery form, каждый раз, когда я отправляю письмо, оно отправляет его дважды. Должно быть, сценарий вызывается дважды, но я не могу понять, где это происходит.
Вот скрипт php:
<?php
require_once('PHPMailer_5.2.0/class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$navn= $_REQUEST['navn'];
$tlf= $_REQUEST['tlf'];
$ring= isset($_REQUEST['ring']) ? $_REQUEST['ring'] : 0;
if($ring == 0)
{
$ring2 = " - og vil gerne ringes tilbage.";
}
else
{
$ring = "";
}
$email= $_REQUEST['email'];
$sendToOwn= isset($_REQUEST['sendToOwn']) ? $_REQUEST['sendToOwn'] : 0;
$besked= $_REQUEST['besked'];
$mail = new PHPMailer();
//$body = "testing 30/11";//file_get_contents('contents.html');
//$body = eregi_replace("[]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "SMTP.Server.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SetFrom('noreply@sentfromDomain.dk', 'Name');
$mail->ClearReplyTos("");
$mail->AddReplyTo("mail@adress.com","Name");
$mail->Subject = "Besked fra mjtransportogflyt.dk";
$mail->MsgHTML("TEST FOR HELVEDE");//"<p>Denne mail er sendt af ".$navn." (".$email.") - ".$tlf.$ring2."</p><p>".$besked."</p>");
$mail->AltBody = "Denne mail er sendt af ".$navn." (".$email.") - ".$tlf.$ring2."<br /> ".$besked; // optional, comment out and test
//$mail->MsgHTML($body);
$address = "Sendto@thisadress.com";
$mail->AddAddress($address, "Kasper John Doe");
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
А вот и jQuery:
$(document).ready(function(){
function validate(formData, jqForm, options) {
for (var i=0; i < formData.length; i++) {
if (!formData[i].value) {
$('#results').removeClass('info').addClass('error');
$('#results').html('<p><strong>Udfyld venligst alle felter</strong></p><p>Din besked blev <strong>ikke</strong> sendt</p>');
//Test om det bliver kaldt
//alert('works?');
return false;
}
}
var options = {
//target: '#results',
success: showResponse
};
function showResponse(statusText){
$('#results').removeClass('info').addClass('success');
$('#results').html('<strong><p>Beskeden er sendt!</p></strong>');
//Får tilbagemelding fra processed.php
//alert(statusText);
}
$('#myform').ajaxSubmit(options);
}
$('#myform').ajaxForm({beforeSubmit:validate})
});
И последняя здесь форма:
<form id="myform" method="post" action="processed.php">
Lots and lots of inputs and stuff
<!--submit button below-->
<button class="btn action">Send besked</button>
</form>
1 ответ:
Я думаю, что ваша проблема заключается в том, что вы добавляете
ajaxForm
в форму, которая сама по себе автоматически отправит форму. Однако перед отправкой вы отправляете его в функциюvalidate
, которая проверяет его, а затем отправляете форму туда же с помощьюajaxSubmit
.Удалите
ajaxSubmit
и это должно исправить его, так какajaxForm
представит его самЯ думаю, что это сработает
$(document).ready(function() { var options = { beforeSubmit: validate, // pre-submit callback success: showResponse // post-submit callback }; // bind form using 'ajaxForm' $('#myForm').ajaxForm(options); }); function showResponse(responseText, statusText, xhr, $form){ $('#results').removeClass('info').addClass('success'); $('#results').html('<strong><p>Beskeden er sendt!</p></strong>'); //Får tilbagemelding fra processed.php //alert(statusText); } function validate(formData, jqForm, options) { for (var i=0; i < formData.length; i++) { if (!formData[i].value) { $('#results').removeClass('info').addClass('error'); $('#results').html('<p><strong>Udfyld venligst alle felter</strong></p><p>Din besked blev <strong>ikke</strong> sendt</p>'); //Test om det bliver kaldt //alert('works?'); return false; } } }