Ajax / PHP mailsend脚本无法正常工作

时间:2013-02-10 11:29:05

标签: php ajax email

我使用一个ajax + php脚本从html网站发送邮件。我在我的其他网站(不同的服务器)上有这个脚本,它的工作正常,但现在我不能让它在我正在建设的新网站上工作。 这是调用ajax函数的表单:

<form id="form" enctype="multipart/form-data" method="post">
            <table id="tablecontact">
            <tr><th>Name:</th><td><input id="name" type="text" class="input" name="Name" value="" size="30" /></td></tr>
            <tr><th>E-mail:</th><td><input id="email" class="input" name="E-mail" value="" size="30" /></td></tr>
            <tr><th>Subject:</th><td><input id="subject" class="input" name="Subject" value="" size="30" /></td></tr>
            <tr><th>Message:</th><td><textarea id="message" class="input" name="Massege" cols="40" rows="5" style="max-width:700px"></textarea></td></tr> 
            <tr><td colspan="2"><center><input id="submit" type="submit" class="submit" value="Submit" onclick="submitForm();" />&nbsp;<input type="button" class="reset" value="Reset" /></center></td></tr>
            </table>
      </form>

这是ajax脚本:

function submitForm() {
if (window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest();
    } else {
        xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
    }

    xmlhttp.onreadystatechange= function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {         
            document.getElementById('response').innerHTML=xmlhttp.responseText;
        }
    }
        var name=document.getElementById('name').value;
        var email=document.getElementById('email').value;
        var subject=document.getElementById('subject').value;
        var message=document.getElementById('message').value;
var parameters='name='+name+'&email='+email+'&subject='+subject+'&message='+message;
xmlhttp.open('POST','mailsend.php',true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(parameters);};

这是mailsend.php:

<?php
$pass = validEmail($_POST['email']);
            $subject = $_POST['subject']." : Contact";
            $email = $_POST['email'] ;
            $name=$_POST['name'];
            $message = $_POST['message'] ;
            $headers = "From: $name Email: $email";
if ($pass && strlen($subject)>=5 && strlen($message)>=5 && strlen($name)>=5) 
        {
            $to='MYMAIL';
            $sent = mail($to, $subject, $message, $headers) ;
            if ($sent){ 
            echo('<div id="success"><img src="ok.png" style="margin-top:3px;" /> Your message was sent.</div>');
            $hppmessage='Thanks for contacting.';
            $hppheaders='Auto Replay from: MYMAIL';
            $hppsubject='Contact message received.';
            $sent1= mail($email,$hppsubject,$hppmessage,$hppheaders,'-f MYMAIL');
            } else
            echo ('<div id="error"><img src="error.png" style="margin-top:3px;" /> Error! Please try again.') ;
        } else
        echo ('<div id="error"><img src="error.png" style="margin-top:3px;" /> Error! Please try again.') ;

?>

任何帮助都会得到帮助,在此先感谢并祝福。

1 个答案:

答案 0 :(得分:0)

没关系,但是使用jQuery,这是一个指向该网站的链接:http://jquery.com/。 jQuery更有效,更快!一旦你包含了jQuery脚本文件,就将你的javascript更改为:

function submitForm(){
   var nameval    = $("#name").val();
   var emailval   = $("#email").val();
   var subjectval = $("#subject").val();
   var messageval = $("#message").val();
   $.post("mailsend.php", { name: nameval, email: emailval, subject :subjectval, message : messageval } );
}

你的ajax脚本来自w3schools,它不是教学的好地方,而是在这里阅读官方jQuery文档:http://api.jquery.com/jQuery.post/

编辑:此外,您的$ to变量不是有效的电子邮件,因此可能是您的问题。