我确信这是一个已经多次回答的问题,但在花了好几个小时试图找出问题之后,我的联系表格仍然存在问题。
当我提交表单时,我会使用Thank you消息重新定向到submit.php页面,但是没有电子邮件发送到我的$ email_to地址。
值得注意的是,此代码在Wordpress主题中,并且当前正在我的本地计算机上运行(这会影响到什么吗?)
有谁能告诉我这里有什么问题吗?我有一种感觉我使用的插件不正确,这个ajax游戏很新!
我正在使用以下插件:
这是我的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");
?>
答案 0 :(得分:0)
您的contact
表格是否更新了记录?如果是这样,那么有两件事我怀疑会出错。
1)来自mail的文档:Lines should not be larger than 70 characters.
2)此外,如果您的本地主机尚未设置为发送电子邮件,那么您不应该期望收到它们。
如果你的contact
表格正在更新,那么我认为#2是你的问题。
有这个问题的其他stackoverflow用户:
Options for mailing from localhost
更新: 绝对删除或注释掉电子邮件部分,直到您可以确信该功能正常工作。设置本地主机邮件服务器需要大量的工作,所以在您确定可以发送电子邮件之前我不会担心这些部分。在没有涉及AJAX的测试文件中尝试此过程。您将收到大量警告和错误消息,以便逐步查看邮件是否正常工作。
在您知道可以在普通的GET页面中执行此操作之前,请不要尝试使用电子邮件等功能在AJAX中运行。
答案 1 :(得分:0)
它确实添加到数据库中吗?所以唯一的问题是电子邮件没有被发送?
在这种情况下,你的问题是你使用localhost发送mail(),我认为它是在Windows机器上。您无法发送localhost,因为Windows(通常)在localhost上没有邮件服务器。您需要使用实际的电子邮件服务器并将服务器地址分配给您的php.ini。
这些设置:
SMTP = smtp.example.com
smtp_port = 25
更多信息here。