我的process.php出了什么问题,导致我的表单无法发送?

时间:2014-07-12 11:16:11

标签: javascript php jquery ajax forms

我已经构建了一个通过Ajax提交的表单,然后使用PHP中的mail()函数进行处理。表单验证和表单提交工作完美(我可以控制记录数据并收到成功消息),但我没有收到来自表单的任何电子邮件。我假设它是process.php。

这是我第一次这样做,所以也非常感谢任何指针/代码改进。

使用Javascript:

var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();

var dataString = 'name=' + name + '&email=' + email + '&message=' + message;
$.ajax({
  type: "POST",
  url: "process.php",
  data: dataString,
  success: function () {
    alert('success');
  }
});

PHP:

<?php
  $myemail = "name@example.com";
  $subject = "Subject";
  $message = "
  Name: $name
  E-mail: $email
  Message: $message
  ";

  mail($myemail, $subject, $message);
?>

2 个答案:

答案 0 :(得分:1)

我认为问题确实存在于php mail()方法中。 只需通过注释mail()调用确保它,并用

替换它
echo 'I should be sending mail now!';
exit;

然后将您的ajax调用更改为:

$.ajax({
  type: "POST",
  url: "process.php",
  data: dataString,
  success: function (response) {
    alert(response);
  }
});

现在将表单发送到服务器,然后查看警报框中显示的内容。 如果你得到了预期的字符串,你应该设置一个smtp服务器,这样你就可以发送邮件了。 另一种选择是使用外部邮件服务器,但它要求您在其他地方拥有适当的电子邮件帐户。

有很多脚本,例如查看phpmailer。

答案 1 :(得分:0)

感谢dibs和dabs的帮助,我设法解决了这个问题。

正如预期的那样,Ajax一切都很好。 电子邮件没有发送,因为它是在本地运行,而不是使用我的服务器邮件PHP。 并且表格中的数据未被引用,因此返回空白电子邮件。

所以,这就是最终的工作:

<?php
  $myemail = "name@example.com";
  $subject = "Subject";
  $name = $_POST['name'];
  $email = $_POST['email'];
  $message = $_POST['message'];

  $body = "
    Name: $name 
    Email: $email
    Message: $message
  ";

  mail($myemail, $subject, $body);
?>