Javascript 用于发送电子邮件的Jquery和PHP联系人表单
当我单击水平菜单上的“Javascript 用于发送电子邮件的Jquery和PHP联系人表单,javascript,php,jquery,html,Javascript,Php,Jquery,Html,当我单击水平菜单上的“Contact”时,此页面将加载到另一个html页面中 我必须删除$(document).ready(function())才能运行它 除了我没有收到邮件之外,一切似乎都正常。 有什么想法吗 谢谢大家! 以下是contact.html的链接: <script type="text/javascript"> $("#submit_btn").click(function() { //collect input field values
Contact
”时,此页面将加载到另一个html页面中
我必须删除$(document).ready(function()
)才能运行它
除了我没有收到邮件之外,一切似乎都正常。
有什么想法吗
谢谢大家!
以下是contact.html的链接:
<script type="text/javascript">
$("#submit_btn").click(function() {
//collect input field values
var user_name = $('input[name=name]').val();
var user_email = $('input[name=email]').val();
var user_message = $('textarea[name=message]').val();
//simple validation at client's end
//we simply change border color to red if empty field using .css()
var proceed = true;
if(user_name==""){
$('input[name=name]').css('border-color','red');
proceed = false;
}
if(user_email==""){
$('input[name=email]').css('border-color','red');
proceed = false;
}
if(user_message=="") {
$('textarea[name=message]').css('border-color','red');
proceed = false;
}
//everything looks good! proceed...
if(proceed)
{
//data to be sent to server
post_data = {'userName':user_name, 'userEmail':user_email, 'userMessage':user_message};
//Ajax post data to server
$.post('contact_me.php', post_data, function(data){
//load success massage in #result div element, with slide effect.
$("#result").hide().html('<div class="success">'+data+'</div>').slideDown();
//reset values in all input fields
$('#contact_form input').val('');
$('#contact_form textarea').val('');
}).fail(function(err) { //load any error data
$("#result").hide().html('<div class="error">'+err.statusText+'</div>').slideDown();
});
}
});
//reset previously set border colors and hide all message on .keyup()
$("#contact_form input, #contact_form textarea").keyup(function() {
$("#contact_form input, #contact_form textarea").css('border-color','');
$("#result").slideUp();
});
</script>
<fieldset id="contact_form">
<div id="result"></div>
<label for="name"><span>Name</span>
<input type="text" name="name" id="name" placeholder="Enter Your Name" />
</label>
<label for="email"><span>Email Address</span>
<input type="text" name="email" id="email" placeholder="Enter Your Email" />
</label>
<label for="message"><span>Message</span>
<textarea name="message" id="message" placeholder="Enter Your Name"></textarea>
</label>
<label><span> </span>
<button class="submit_btn" id="submit_btn">Submit</button>
</label>
</fieldset>
$(“#提交”_btn”)。单击(函数(){
//收集输入字段值
var user_name=$('input[name=name]')。val();
var user_email=$('input[name=email]')。val();
var user_message=$('textarea[name=message]')。val();
//客户端的简单验证
//如果字段为空,我们只需使用.css()将边框颜色更改为红色
var=true;
如果(用户名==“”){
$('input[name=name]').css('border-color','red');
继续=错误;
}
如果(用户_电子邮件==“”){
$('input[name=email]').css('border-color','red');
继续=错误;
}
如果(用户消息==“”){
$('textarea[name=message]').css('border-color','red');
继续=错误;
}
//一切看起来都很好!继续。。。
如果(继续)
{
//要发送到服务器的数据
post_data={'userName':user_name,'userEmail':user_email,'userMessage':user_message};
//Ajax将数据发布到服务器
$.post('contact_me.php',post_数据,函数(数据){
//在#result div元素中加载成功按摩,具有滑动效果。
$(“#结果”).hide().html(“”+data+“”).slideDown();
//重置所有输入字段中的值
$('#联系形式输入').val('');
$(“#联系形式文本区域”).val(“”);
}).fail(函数(err){//加载任何错误数据
$(“#结果”).hide().html(“”+err.statusText+“”).slideDown();
});
}
});
//重置以前设置的边框颜色并隐藏.keyup()上的所有消息
$(“#联系人表单输入,#联系人表单文本区域”).keyup(函数(){
$(“#联系人表单输入,#联系人表单文本区域”).css('border-color','');
$(“#结果”).slideUp();
});
名称
电子邮件地址
消息
提交
这里是联系_me.php
<?php
if($_POST)
{
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die();
}
$to_Email = "@gmail.com"; //Replace with recipient email address
$subject = 'ContactUS'; //Subject line for emails
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
die();
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
header('HTTP/1.1 500 Name is too short or empty!');
exit();
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
header('HTTP/1.1 500 Please enter a valid email!');
exit();
}
if(strlen($user_Message)<5) //check emtpy message
{
header('HTTP/1.1 500 Too short message! Please enter something.');
exit();
}
//proceed with PHP email.
$headers = "From: $user_Email\n" .
"Reply-To: $user_Email\n" .
"MIME-Version: 1.0\n" .
"Content-Type: text/html\n" .
"X-Mailer: PHP/" . phpversion();
@$sentMail = mail($to_Email, $subject, $user_Message .' -'.$user_Name, $headers);
if(!$sentMail)
{
header('HTTP/1.1 500 Couldnot send mail! Sorry..');
exit();
}else{
echo 'Hi '.$user_Name .', Thank you for your email! ';
echo 'Your email has already arrived in my Inbox, all I need to do is Check it.';
}
}
?>
不使用PHP接收电子邮件可能有很多原因。请检查邮件服务器是否正常工作,PHP.ini是否具有正确的smtp.host设置。如果使用外部电子邮件地址接收邮件(例如谷歌电子邮件),您的邮件服务器应该能够向其发送邮件。Gmail需要身份验证和SMTPS进行发送,这需要额外设置您的邮件服务器。此外,请检查您的垃圾邮件文件夹!此处可能存在许多问题
首先,die()
其次,正如RUJordan所规定的,@
抑制错误消息。您也可能没有邮件服务器;您应该(仅在开发环境中)使用该功能
第三,您的电子邮件标题应该用\r\n
分隔,而不是如中所述的\n
。您的最后一个标题也应该有\r\n
第四,从用户的电子邮件地址发送电子邮件(让我们使用“abc@example.com)通过你的服务器(让我们使用“yourdomain.com”)是一种常见的垃圾邮件策略,通常会导致电子邮件被标记为垃圾邮件和/或自动删除(Gmail对我这样做)。请尝试从noreply@yourdomain.com"-您的服务器现在正在从其自己的域发送电子邮件,因此更值得信赖。无论如何,您应该检查您的垃圾邮件文件夹-但这一步骤减少了Gmail在到达您的收件箱或垃圾邮件文件夹之前将其删除的机会
最后,邮件服务器有时会出现负载。电子邮件可能不会立即发送;请尝试等待数小时(tumblr曾经延迟了这么长时间)。此外,如果这是托管托管平台,请与主机确认一切正常。取出@
,您正在抑制错误消息。此外,您是否设置了邮件服务器?我已删除@,添加了HTTP 500错误,并将所有标题更改为\r\n。仍然无法工作。我已向DrEAMCHOST.#1-这应该是一条评论,#2您不能通过phpmail
功能使用smtp
,#3 Gmail身份验证与此问题无关。-1全面。@Ohgodwhy#2:,请检查这一点,您必须在windows php上设置smtp才能发送电子邮件,伙计。#3,同样,当google的邮件服务器从您的邮箱接收邮件时本地邮件服务器,它需要身份验证。感谢您提供要修复的问题列表。它使用我的gmail帐户通过dreamhost发送电子邮件。我必须创建dreamhost email@mydomain。