Jquery/Ajax联系表格不发送电子邮件
我确定这是一个已被多次回答的问题,但花费数小时试图找出问题后,我仍然遇到与联系表单有关的问题。Jquery/Ajax联系表格不发送电子邮件
当我提交表单时,我收到了重新定向至submit.php页面的谢谢信息,但没有邮件发送到我的$ email_to地址。
这也许值得一提的是,这个代码是一个WordPress主题里面,它是目前我的本地机器上运行(这会不会影响什么关系吗?)
谁能告诉我,如果有什么我做错了这里?我有一种感觉,我错误地使用了插件,对于这个ajax游戏来说相当新颖!
我使用以下插件:
- jQuery的表格插件(http://pastebin.com/cC5899ns)
- jQuery验证(http://pastebin.com/GyYuVwAH)
这里是我的HTML:
<div id="footer">
<h3>Contact</h3>
<div id="preview"></div>
<form name="form" id="form" action="<?php bloginfo('template_directory'); ?>/_/inc/submit.php" method="post">
<input type="text" value="Your name" name="name" />
<input type="tel" value="Your contact number" name="email" />
<textarea name="message">Quick Note</textarea>
<button>Submit</button>
</form>
</div>
个
我的JS:
$(document).ready(function(){
$('#form').validate(
{
rules:
{
"name":{
required:true,
maxlength:40
},
"email":{
required:true,
email:true,
maxlength:100
},
"message":{
required:true
}},
messages:
{
"name":{
required:"This field is required"
},
"email":{
required:"This field is required",
email:"Please enter a valid email address"
},
"message":{
required:"This field is required"
}},
submitHandler: function(form){
$(form).ajaxSubmit({
target: '#preview',
success: function() {
alert('hello');
$('#foooter').slideUp('fast');
}
});
}
})
});
我Submit.php
<?php
include("db.php");
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$name=mysql_real_escape_string($_POST['name']);
$email=mysql_real_escape_string($_POST['email']);
$message=mysql_real_escape_string($_POST['message']);
if(strlen($name)>0 && strlen($email)>0 && strlen($message)>0)
{
$email_to = "*********";
$email_from = $email;
$email_subject = "Contact Form";
$email_message = stripslashes($message);
$headers = 'From: '.$email_from."\r\n" .
'Reply-To: '.$email_from."\r\n";
mail($email_to, $email_subject, $email_message, $headers);
$time=time();
mysql_query("INSERT INTO contact (name,email,message,created_date) VALUES('$name','$email','$message','$time')");
echo "<h1>Thank You !</h1>";
}
}
?>
我db.php中
<?php
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "*****";
$mysql_database = "******";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong");
?>
是您的contact
表中获取与记录更新?如果是这样,那么我怀疑有两件事情会出错。
1)从mail的文档:Lines should not be larger than 70 characters.
2)另外,如果你的本地主机没有被设置为发送电子邮件,那么你不应该指望得到他们。
如果您的contact
表正在更新,那么我会假设#2是您的问题。
其他计算器用户提供这样一个问题:
Options for mailing from localhost
更新: 绝对删除或注释掉的电子邮件部分,直到你可以安慰自己的是,功能正在工作。设置本地主机邮件服务器需要很多工作,所以我不担心这些部分,除非您确定可以发送电子邮件。在没有涉及AJAX的测试文件中尝试此过程。您将有足够的警告和错误消息来逐步查看该邮件是否正常工作。
不要试图获取功能,如电子邮件内AJAX工作,直到你知道你可以在一个正常的GET页面做到这一点。
它添加到数据库中正确的吗?所以唯一的问题是电子邮件没有被发送?
在这种情况下,你的问题是,你正在使用本地主机发送邮件(),我以为是在Windows机器上。由于Windows(通常)在本地主机上没有邮件服务器,因此无法发送本地主机。您需要为此使用实际的电子邮件服务器,并将服务器地址分配给您的php.ini。
这些设置:
SMTP = smtp.example.com
smtp_port = 25
更多信息here。
你需要一步一步经过追查,看看它是怎么回事错了 - 您所提供的终端到终端的过程,但你应该能够缩小这个下来自己。警报('hello')正在显示吗?使用萤火虫或类似的东西来检查请求是否被发送到服务器 - 最后你需要检查保存和数据库代码。 – 2012-04-12 12:23:01
如果您使用的是Chrome,则有一个Javascript控制台(当您按下扳手按钮时,在“Tools”中)。这将知道所有这些错误和警告(如果有的话)。 – 2012-04-12 12:23:07
这与您的错误没有任何关系,但是在$('#footer')。slideUp('fast'); “页脚”拼写错误。 :) – Jan 2012-04-12 12:28:55