gpt4 book ai didi

php - jQuery + PHP 发送重复的空白电子邮件

转载 作者:行者123 更新时间:2023-12-01 08:09:23 26 4
gpt4 key购买 nike

正在尝试设置联系表单。表单提交电子邮件并可选择抄送发件人。如果启用了 javascript,表单将提交到 contact-ajax.php(用感谢消息替换表单),否则提交到 contact.php(重定向到感谢页面)。后备表单工作正常,但每次 ajax 表单触发时,它也会发送一封完全空白的电子邮件(如果选中了抄送选项,则向发件人和收件人发送)。我不明白为什么会发生这种情况。任何见解将不胜感激。

表单 HTML:

<form method="post" id="email_form" name="email_form" action="contact.php">
<label for="name">Name:</label><br />
<input type="text" name="name" id="name" placeholder="John Doe" /><br />
<label for="email">Email Address:</label><br />
<input type="text" name="email" id="email" placeholder="johndoe@gmail.com" /><br />
<label for="subject">Subject </label></td><br />
<input type="text" name="subject" id="subject" placeholder="Subject" /><br />
<label for="message">Message:</label></td><br />
<textarea cols="35" rows="5" name="message" id="message" placeholder="Your Message"></textarea><br />
<input type="checkbox" name="cc" id="cc" checked value="Yes" /><label for="cc"> Send yourself a copy of this message</label><br />
<input class="submit pulldown button" name="submit" id="submit" type="submit" value="Send Message" />
</form>

Javascript:

$(document).ready(function() {
$('#email_form #submit').click(function(event) {
event.preventDefault();
$.ajaxSetup ({
cache: false
});
$.ajax({
type: 'POST',
url: 'contact-ajax.php',
data: $("#email_form").serializeArray(),
success: function(msg) {
if(msg=='Mail sent') {
alert(msg);
}
else {
alert('Error sending mail. Please try again.');
}
},
error: function(ob,errStr) {
alert('Error sending mail. Please try again.');
}
});
return false;
});
});

由脚本调用的 PHP 表单 (contact-ajax.php):

<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$email_subject = $_POST['subject'];
$message = $_POST['message'];
$today = date('r');
$email_from = "address@domain.tld";
$to = "address@domain.tld";
$email_body = "On $today $name wrote:\n"."$message";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
if (isset($_POST['cc'])) {
$headers .= "CC: $visitor_email \r\n";
}
$headers .= "X-Mailer: PHP/". phpversion();
mail($to,$email_subject,$email_body,$headers);
if(mail($to, $subject, $body, $headers)) {
die('Mail sent');
}
else {
die('Error: Mail failed');
}
}
?>

非 Ajax php 脚本 (contact.php) 是相同的,只是它以 header('Location:thanks_page.html'); 结尾,而不是最后一个 if声明。

空白电子邮件不包含主题或邮件正文,但发件人、回复和抄送字段均按照正确(非空)邮件中的方式填写。几天来我一直在试图找出问题所在,但似乎无法找到答案。

最佳答案

邮件函数发送邮件..你写了mail() 2次..足以检查if中的返回值

mail($to,$email_subject,$email_body,$headers);
if(mail($to, $subject, $body, $headers)) { ......

仅使用这种方式:

if(mail($to, $subject, $body, $headers)) { //mail sent 
} else {
//mail not sent
}

更新使用PHPMailer易于使用,我认为比简单的 php 邮件功能更好。

关于php - jQuery + PHP 发送重复的空白电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com