php - JS表单提交无论是否发送邮件都不会发送成功消息
问题描述
大家好,我正在尝试在不重新加载页面、表单验证等的情况下发送邮件,似乎一切正常,但我无法确定是否正在发送邮件,因为没有打印成功消息
这是我的 html、js 和 php 代码
html
<form name="ContactForm" method="post" action="">
<div class="message_box" style="margin:10px 0px;"></div>
<input type="text" name="name" id="name" placeholder="Name:" />
<input type="email" name="email" id="email" placeholder="Email:" />
<input type="tel" name="phone" id="phone" placeholder="Phone:" />
<textarea name="message" id="message" placeholder="Message:" /></textarea>
<input type="submit" name="send" class="btn btn-default" value="Send message">
</form>
js
$(document).ready(function() {
var delay = 2000;
$('.btn-default').click(function(e){
e.preventDefault();
var name = $('#name').val();
if(name == ''){
$('.message_box').html(
'<span style="color:red;">Enter Your Name!</span>'
);
$('#name').focus();
return false;
}
var email = $('#email').val();
if(email == ''){
$('.message_box').html(
'<span style="color:red;">Enter Email Address!</span>'
);
$('#email').focus();
return false;
}
if( $("#email").val()!='' ){
if( !isValidEmailAddress( $("#email").val() ) ){
$('.message_box').html(
'<span style="color:red;">Provided email address is incorrect!</span>'
);
$('#email').focus();
return false;
}
}
var phone = $('#phone').val();
if(phone == ''){
$('.message_box').html(
'<span style="color:red;">Enter Your Phone With Country Code!</span>'
);
$('#phone').focus();
return false;
}
var message = $('#message').val();
if(message == ''){
$('.message_box').html(
'<span style="color:red;">Enter Your Message Here!</span>'
);
$('#message').focus();
return false;
}
$.ajax
({
type: "POST",
url: "quickmail.php",
data: "name="+name+"&email="+email+"&phone="+phone+"&message="+message,
beforeSend: function() {
$('.message_box').html(
'<img src="images/loading.gif" width="25" height="25"/>'
);
},
success: function(data)
{
setTimeout(function() {
$('.message_box').html(data);
}, delay);
}
});
});
});
最后是php代码
if(isset($_POST['name']) !="" && isset($_POST['email']) !=""){
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$to = "email@yourdomain.com";
$subject = "New Query";
$message = "<p>New email is received from $name.</p>
<p>$message</p>";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: <".$email.">" . "\r\n";
$sent = mail($to,$subject,$message,$headers);
if($sent){
echo "<span style='color:green; font-weight:bold;'>
Thank you for contacting us, we will get back to you shortly.
</span>";
echo '<script type="text/javascript">alert("Thanks $name, we have received your message.")</script>';
}else{
echo "<span style='color:red; font-weight:bold;'>
Sorry! Your form submission is failed.
</span>";
}
}
真的很感激你们中的一位专家可以帮助我解决它。
提前致谢
更新
正如建议的那样,我尝试了 json 但仍然没有打印任何内容?
header('Content-Type: application/json');
$json = json_encode($data);
if(isset($_POST['name']) !="" && isset($_POST['email']) !=""){
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$to = "email@yourdomain.com";
$subject = "New Query";
$message = "<p>New email is received from $name.</p>
<p>$message</p>";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: <".$email.">" . "\r\n";
$sent = mail($to,$subject,$message,$headers);
if($sent){
$data = "<span style='color:green; font-weight:bold;'>
Thank you for contacting us, we will get back to you shortly.
</span>";
}else{
$data = "<span style='color:red; font-weight:bold;'>
Sorry! Your form submission is failed.
</span>";
}
}
echo $json;
解决方案
推荐阅读
- ruby-on-rails - 选择过滤器后 Rails filterrific 不更新视图
- c# - 获取通过plink创建的子进程的PID
- java - 无法在jsp页面中获取整数值
- python-3.x - 使用 Python cx_Oracle 运行更新查询只会使系统挂起并且不会生成异常
- git - “发布”分支意外合并为“主”
- java - java日期对象的默认Jsonb序列化格式是什么
- reactjs - 具有任意多个子级的 React 父组件如何在不使用 useRef 的情况下通过其字符串 id 更新选定的子级?
- python - 对 OSMnx 的大 graph_from_place() 请求导致超时错误
- javascript - 为什么传播属性不适用于 React useState 钩子
- excel - 在 Python Pandas 中从 Excel 导入并将元数据标题重新排列为列数据