2015-10-19 97 views
3

我想使用jQuery和PHP发送电子邮件,但不知何故,即使PHP成功执行,我也没有收到电子邮件。为什么PHP表单不发送电子邮件

这是我的javascript代码:

<script type='text/javascript'> 
    $("#formoid").submit(function(event) { 
     event.preventDefault(); 
     var $form = $(this), 
      url = $form.attr('action'); 
     var posting = $.post(url, { 
      name: $('#name').val(), 
      email: $('#email').val(), 
      message: $('#message').val() 
     }); 
     posting.done(function(data) { 
      $("#result").empty().append('Thank you for contacting. Will get back to you as sson as possible.'); 
     }); 
    }); 
</script> 

我的PHP是这样的:

<?php 
    if(isset($_POST['submit'])){ 
     $to = "[email protected]"; // this is your Email address 
     $from = $_POST['email']; // this is the sender's Email address 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $subject = "Portfolio form submission"; 

     $message = $name . " " . $email . " wrote the following:" . "\n\n" . $_POST['message'];  

     $headers = "From:" . $from; 
     $headers2 = "From:" . $to; 
     mail($to,$subject,$message,$headers); 
    } 
?> 

当我提交表单,并检查DOM中,我看到的结果是好的。 在XHR细节,它表明:

statusText: "OK" 

难道我做错了吗?

编辑: 的要求添加HTML:

<form class="no-bottom" id="formoid" action="contact.php" title="" method="post"> 
    <label for="name" class="sr-only">Name</label> 
    <input type="text" class="underline" name="name" id="name" placeholder="Your name..." required> 
    <label for="email" class="sr-only">Email</label> 
    <input type="email" class="underline" name="email" id="email" placeholder="Your email..." required> 
    <label for="message" class="sr-only">Message</label> 
    <textarea class="underline" name="message" id="message" cols="30" rows="6" placeholder="Here goes the message..." required></textarea> 
    <div class="margin-1"></div> 
    <input type="submit" value="Send it"> 
</form> 
+3

检查'isset($ _ POST [ '提交'])'当它不从客户 – Tushar

+1

哪里发送你执行这个PHP代码?你是否安装并配置了MailServer? –

+0

在这里提供你的'html'。 –

回答

1

isset($_POST['submit'])正在检查密钥submit是否存在于发布日期的客户端。

但是,客户端发送的数据不包括它。

var posting = $.post(url, { 
    name: $('#name').val(), 
    email: $('#email').val(), 
    message: $('#message').val() 
}); 

要使其工作,您可以将其添加到POST数据中或检查服务器中的另一个密钥。

var posting = $.post(url, { 
    name: $('#name').val(), 
    email: $('#email').val(), 
    message: $('#message').val(), 
    submit: 'anythingTruthyHere' // Added `submit` key 
}); 

或者,您可以检查email出现在POST数据

if (isset($_POST['email'])) { 
    // send mail code here 
0

你可以用好LIB PHPMailer。使用PHPMailer,您可以轻松设置smtp服务器地址,端口和身份验证。如果您想从本地计算机发送电子邮件,则必须在本地设置smtp服务器(如Postfix)。

0

我给你一个简单的想法,而不是像这样写代码,分开文件。连接形式采取行动,一些sendemail.php和写入发送电子邮件那里,最后写你的PHP代码如下

header("Location: contact.php"); 

没有必要的JavaScript和不使代码complex.This应该帮助居多。

+0

嗨,我的PHP已经是一个单独的文件。你可以看到,在我的表单中,我调用了一个单独的PHP文件。 – ssdesign

相关问题