使用mail()的jQuery AJAX表单PHP脚本有时会发送电子邮件,而HTML中的POST数据是白色的

时间:2014-10-09 15:30:14

标签: php jquery html ajax email

我正在尝试将ajax脚本用于我的电子邮件发件人表单,但我无法解决问题。有时,服务器没有发送电子邮件,并且它发生了,电子邮件的正文是干净的......消息没有出现,我不知道为什么,发件人是我的服务器而不是我的测试邮件......有人能帮助我吗?

这是我的代码:

HTML

<div class="span8 module_cont module_feedback_form module_small_padding1">
    <form name="feedback_form" method="post" class="feedback_form">
        <input type="text" name="field-name" value="Nome" title="Name" class="field-name form_field">
        <div class="clear"></div>
        <input type="text" name="field-email" value="Email" title="Email" class="field-email form_field">
        <div class="clear"></div>
        <input type="text" name="field-subject" value="Oggetto" title="Subject" class="field-subject form_field">
        <div class="clear"></div>
        <textarea name="field-message" cols="45" rows="5" title="Message" class="field-message form_field">Messaggio</textarea>
        <div class="clear"></div>
        <input type="reset" name="reset" id="reset2" value="Cancella" class="feedback_reset">
        <input type="button" name="submit" class="feedback_go" id="submit2" value="Invia Messaggio!">
        <div class="ajaxanswer"></div>
    </form>
</div>

JS

    jQuery('.feedback_go').click(function(){
    var par = jQuery(this).parents(".feedback_form");
    var name = par.find(".field-name").val();
    var email = par.find(".field-email").val();
    var message = par.find(".field-message").val();
    var subject = par.find(".field-subject").val();
    if (email.indexOf('@') < 0) {           
    email = "mail_error";
    }
    if (email.indexOf('.') < 0) {           
        email = "mail_error";
    }
    jQuery.ajax({
        url: "mail.php",
        type: "POST",
        data: { name: name, email: email, message: message, subject: subject },
        success: function(data) {
            jQuery('.ajaxanswer').hide().empty().html(data).show("slow");
            setTimeout("jQuery('.ajaxanswer').fadeOut('slow')",5000);
      }
    });
});

PHP

<?php
if($_POST){
$name = $_POST['field-name'];
$email = $_POST['field-email'];
$subject = $_POST['field-subject'];
$message = $_POST['field-message'];

//send email
mail("info@targetmail.com", "Information From Examplesite.com" .$email, $message);

}     ?&GT;

谢谢大家!

2 个答案:

答案 0 :(得分:0)

首先,我应该警告不要在现实世界中使用这个脚本,因为垃圾邮件发送者会滥用它。

这说我相信问题是你的ajax将字段重命名为名称,电子邮件,消息,主题而没有字段前缀。

答案 1 :(得分:0)

另外html5输入type ='email'来执行给定地址的简单浏览器验证(只需检查符合电子邮件标准和@和。)