2016-03-05 83 views
1

我一直在使用模板最近建立一个网站,一切都一直很好......除了电子邮件脚本变量每次都是空白的。此模板的简单电子邮件表格不起作用

形式:

<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php"> 
    <div class="form-group"> 
     <input type="text" name="name" class="form-control" required="required" placeholder="Name"> 
    </div> 
    <div class="form-group"> 
     <input type="email" name="email" class="form-control" required="required" placeholder="Email Id"> 
    </div> 
    <div class="form-group"> 
     <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Your text here"></textarea> 
    </div>       
    <div class="form-group"> 
     <input type="submit" name="submit" class="btn btn-submit" value="Submit"> 
    </div> 
</form> 

动作(sendemail.php):

<?php 
    $name  = @trim(stripslashes($_POST['name'])); 
    $from  = @trim(stripslashes($_POST['email'])); 
    $subject = @trim(stripslashes($_POST['subject'])); 
    $message = @trim(stripslashes($_POST['message'])); 
    $to  = '[email protected]'; 

    $headers = "MIME-Version: 1.0"."\r\n"; 
    $headers .= "Content-type: text/plain; charset=iso-8859-1"."\r\n"; 
    $headers .= "From: ".$name." <".$from.">"."\r\n"; 
    $headers .= "Reply-To: <".$from.">"."\r\n"; 
    $headers .= "Subject: ".$subject."\r\n"; 
    $headers .= "X-Mailer: PHP/".phpversion(); 

    mail($to, $subject, $message, $headers); 
    die; 
?> 

jQuery的:

// Contact form 
var form = $('#main-contact-form'); 
form.submit(function(event){ 
    event.preventDefault(); 
    var form_status = $('<div class="form_status"></div>'); 
    $.ajax({ 
     type: "POST", 
     url: $(this).attr('action'), 
     beforeSend: function(){ 
      form.prepend(form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn()); 
     } 
    }).done(function(data){ 
     form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut(); 
    }); 
}); 

难道你们有什么见解?通常我不会惹恼jQuery。

+0

'邮件()'需要一个邮件服务器来发送电子邮件。也许PHPMailer是一个更好的选择。有了它,你实际上可以验证电子邮件是否被发送。 – Xorifelse

+0

我只注意到'$ headers'是一个数组。我相信这应该是一个字符串。要捣鼓。如果可行,可以删除我的问题。 – jdstankosky

+0

是的,应该是一个字符串。 'join('\ r \ n',$ headers)'另外,检查$ _POST []变量是否为空是个好主意。机器人可能会跟着链接发送空的邮件请求,导致空的邮件,甚至可能添加验证码 – Xorifelse

回答

1

对于PHP:

$headers = [ // or array(for older PHP versions. 
"MIME-Version: 1.0", 
"Content-type: text/plain; charset=iso-8859-1", 
"From: $name <$from>", 
"Reply-To: <$from>", 
"Subject: $subject", 
"X-Mailer: PHP/".phpversion() 
]; 

mail($to, $subject, $message, join('\r\n', $headers)); 

为JavaScript:

$.ajax({ 
    type: "POST", 
    url: $(this).attr('action'), 
    data: { 
     name: $('#name').val(), 
     email: $('#email').val(), 
     subject: $('#subject').val(), 
     message: $('#message').val() 
    }, 
}).done(function(data){ 
    form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut(); 
}); 

对于HTML

<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php"> 
    <div class="form-group"> 
     <input type="text" id="name" class="form-control" required="required" placeholder="Name"></input> 
    </div> 
    <div class="form-group"> 
     <input type="email" id="email" class="form-control" required="required" placeholder="Email Id"></input> 
    </div> 
    <div class="form-group"> 
     <input type="text" id="subject" class="form-control" required="required" placeholder="Subject"></input> 
    </div> 
    <div class="form-group"> 
     <textarea id="message" required="required" class="form-control" rows="8" placeholder="Your text here"></textarea> 
    </div>       
    <div class="form-group"> 
     <input type="submit" name="submit" class="btn btn-submit" value="Submit"></input> 
    </div> 
</form> 
+0

好的。事情的组合是错误的,我的东西。以下是我所做的解决所有问题的方法。随意编辑你的答案来反映它。 a)为主题行添加了一个输入。 b)给每个输入一个'id ='。 c)使用'$('#name').val()'等等。另外,作为一个附注,''标签不需要关闭,但是对于xhtml严格,它们是自我关闭的'' – jdstankosky

+0

好吧,即使jquery'“input [name ='name']”'可以是有效的。我建议将它更新为HTML 5,因为根据我的经验,XHTML是不值得的。从它更新也是一个痛苦的原因在任何其他HTML版本''可能会导致意想不到的行为。 – Xorifelse