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>&nbsp;</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您不能通过php
mail
功能使用
smtp
,#3 Gmail身份验证与此问题无关。-1全面。@Ohgodwhy#2:,请检查这一点,您必须在windows php上设置smtp才能发送电子邮件,伙计。#3,同样,当google的邮件服务器从您的邮箱接收邮件时本地邮件服务器,它需要身份验证。感谢您提供要修复的问题列表。它使用我的gmail帐户通过dreamhost发送电子邮件。我必须创建dreamhost email@mydomain。