2014-02-09 52 views
0

我很难理解为什么这个表格不工作。我收到了成功的消息,但没有任何内容被发送到我的收件箱,我也检查了我的垃圾邮件。即使在等待几分钟后,仍然没有出现。我对ajax或php并不是很熟悉,所以我可能会在那部分做一些错误的事情。我不明白为什么这个联系表格不起作用

我使用两个插件,http://malsup.github.io/jquery.form.jshttp://jquery.bassistance.de/validate/jquery.validate.js

HTML( “角” 的div只是为了造型的目的)

 <form action="contact-form.php" method="post" autocomplete="off" id="contact"> 

      <div class="corner"></div> 
      <input type="text" required name="name" placeholder="Name" class="name"> 

      <div class="corner"></div> 
      <input type="email" required name="email" placeholder="Email" class="email"> 

      <div class="corner"></div> 
      <div id="contact-check">You sure 'bout that?</div> 
      <input type="text" required name="check" placeholder="Quick! What's 2 + 2 ?" class="check"> 

      <div class="corner"></div> 
      <textarea name="message" rows="25" cols="50" placeholder="Drop me a line!"></textarea> 

      <input type="submit" name="submit" value="send" class="send" /> 
     </form> 

的jQuery(使用AJAX)

var contactForm = $('form#contact') 
    inputCheck = $('input.check') 
    contactCheck = $('div#contact-check'); 

// Check if answered math question correctly 
inputCheck.keyup(function(){ 
    if($(this).val() == 4){ 
     contactCheck.fadeOut(); 
    } else { 
     contactCheck.fadeIn(); 
    } 
}); 

// Validate input from contact form 
$('form#contact').validate({ 
    submitHandler: function(form) { 
    $(form).ajaxSubmit({ 
     clearForm: true, 
     success: function(){ 
     // if it's good, do this 
     contactCheck.fadeOut(); 
     alert("Thanks, I'll get back to you soon!"); 
     } 
    }); 
    return false; 
    }, 
    invalidHandler: function(form) { 
    // if it's bad, do this 
    alert('Oops, something went wrong.'); 
    } 
}); 

最后PHP的

$name = $_POST['name']; 
$email = filter_var($_POST['email'],FILTER_VALIDATE_EMAIL); 
$message = $_POST['message']; 
$from = 'From: MessageForAnita'; 
$to = '[email protected]'; 
$subject = 'Hello'; 
$check = $_POST['check']; 

$body = " From: $name\n E-Mail: $email\n Message:\n $message"; 


if ($_POST['submit'] && $check == '4') {     
    if (mail ($to, $subject, $body, $from)) { 
     echo 'Your message was sent!'; 
    } else { 
     echo 'Something went wrong, go back and try again!'; 
    } 
} 
+0

检查邮件服务器日志 – 2014-02-09 21:04:21

+0

大多数SMTP服务器需要有效的“发件人”地址。 “FROM:MessageForAnita”不是有效的地址。将其修复为“From:MessageForAnita <[email protected]>”。但除此之外,你真的应该检查你的服务日志是否有错误。 – Tularis

+0

关于正在发送的消息的PHP ** LIES **。 mail()返回true意味着电子邮件已成功移交给您的邮件服务器。之后,它仍然可以被丢弃/丢失/拒绝/等等/等等等等等等。 –

回答

0

我编辑的PHP来

$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 

$to = "[email protected]"; 
$subject = 'You have a message sent from your site'; 

$check = $_POST['check']; 

$body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

mail($to, $subject, $body); 

和我幸运的是收到新邮件的通知。然而,$ name,$ email和$ message没有值,所以我只收到“From:E-Mail:Message:”的电子邮件,以解决下一个问题。感谢所有的评论。还需要使此表格更安全。

更新: 我终于明白了。几天前,我改变了我的.htaccess文件,并且在链接到联系人表单时,我忘了取出.php扩展名。这非常简单吗?

0

您需要检查头你发送并确保格式正确。

这不是测试,但给你的,你应该做的事情的想法:

$name  = $_POST['name']; 
$message = $_POST['message']; 
$email  = filter_var($_POST['email'],FILTER_VALIDATE_EMAIL); 

$to   = '[email protected]'; 
$subject = 'Hello MessageForAnita'; 
$body  = "From: $name\n E-Mail: $email\n Message:\n $message"; 

// In case any of our lines are larger than 70 characters, we should use wordwrap() 
$body  = wordwrap($body, 70, "\r\n"); 

$headers = "From: $email" . "\r\n"; 

if ($_POST['submit'] && $check == '4') {     
    if (mail ($to, $subject, $body, $headers)) { 
     echo 'Your message was sent!'; 
    } else { 
     echo 'Something went wrong, go back and try again!'; 
    } 
} 

PHP mail function

相关问题