PHPMailer 5.2.0每次发送2封邮件
首先,;抱歉,如果之前有人问过这个问题,我已经搜索了最近几天没有运气了 我使用phpmailer5.2.0从表单发送邮件,表单由jQuery脚本的AJAX调用,每次发送邮件都会发送两次。一定是脚本被调用了两次,但我不知道它发生在哪里 以下是php脚本:PHPMailer 5.2.0每次发送2封邮件,php,jquery,jquery-plugins,phpmailer,Php,Jquery,Jquery Plugins,Phpmailer,首先,;抱歉,如果之前有人问过这个问题,我已经搜索了最近几天没有运气了 我使用phpmailer5.2.0从表单发送邮件,表单由jQuery脚本的AJAX调用,每次发送邮件都会发送两次。一定是脚本被调用了两次,但我不知道它发生在哪里 以下是php脚本: <?php require_once('PHPMailer_5.2.0/class.phpmailer.php'); //include("class.smtp.php"); // optional, gets called from wi
<?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!";
}
?>
我认为您的问题在于您正在将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;
}
}
}
$(文档).ready(函数(){
变量选项={
beforeSubmit:validate,//预提交回调
成功:showResponse//post-submit回调
};
//使用“ajaxForm”绑定表单
$('#myForm').ajaxForm(选项);
});
函数showResponse(responseText、statusText、xhr$form){
$('#results').removeClass('info').addClass('success');
$('results').html('Beskeden er sendt!);
//Får tilbagemelding fra processed.php
//警报(状态文本);
}
函数验证(formData、jqForm、options){
对于(var i=0;iUdfyld-venligst-alle-felterDin-besked-blevikesendt”);
//测试om det bliver kaldt
//警惕(‘有效’);
返回false;
}
}
}
您可以使用客户端工具(firebug、chrome developer tools、opera dragonfly等)网络选项卡进行检查,查看它是否发送两个请求。通过这种方式,您可以确定这是一个jQuery问题还是PHP问题。我还没有找到它的任何踪迹。但是我又不知道去哪里找,所以我只是随便找了一些地方,如果你能告诉我在哪里可以找到它,我将不胜感激。谢谢!这是有效的,现在它只发送1封邮件,尽管现在直接转到processed.php而不是启动showResponse。知道吗?出现javascript错误了吗?我对我的答案进行了一些编辑,以便从开发者网站上复制更多的例子。试试上面的方法,看看会发生什么?恐怕它仍然无法启动这些功能。看看这里,表单在名为“kontakt”的页面上。不,它仍然不起作用-我正要把头发拔出来-你的javascript中有语法错误。您需要在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>
$(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;
}
}
}