【发布时间】:2017-02-21 18:16:45
【问题描述】:
我正在尝试使用 php mail() 函数向用户帐户发送电子邮件。邮件已成功发送,但问题是它正在向我发送没有任何值的空白电子邮件!发送邮件的联系页面代码如下:-
<form class="contact-form" method="POST" action="sendemail.php">
<div class="row-fluid">
<div class="span5">
<label>First Name</label>
<input type="text" class="input-block-level" required="required" placeholder="Your First Name" name="name">
<label>Last Name</label>
<input type="text" class="input-block-level" required="required" placeholder="Your Last Name" name="lname">
<label>Email Address</label>
<input type="text" class="input-block-level" required="required" placeholder="Your email address" name="email">
</div>
<div class="span7">
<label>Message</label>
<textarea name="message" id="message" required="required" class="input-block-level" rows="8" name="message"></textarea>
</div>
</div>
<input type="submit" class="btn btn-primary btn-large pull-right" value="Send Message" />
<p> </p>
</form>
和sendemail.php页面代码如下:
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Email sent!'
);
$name = @trim(stripslashes($_POST['name']));
$email = @trim(stripslashes($_POST['email']));
$subject = "An enquiry sir";
$message = @trim(stripslashes($_POST['message']));
$email_from = $email;
$email_to = 'email@email.com';
echo $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
?>
为什么我的电子邮件 ID 中的输出为空白,例如:
姓名:
电子邮件:
主题:
消息:
P.N:我在这里使用的是 nova 模板主题。
正在使用以下 JavaScript 通过 AJAX 提交表单:
var form = $('.contact-form');
form.submit(function () {
$this = $(this);
$.post($(this).attr('action'), function(data) {
$this.prev().text(data.message).fadeIn().delay(3000).fadeOut();
},'json');
return false;
});
【问题讨论】:
-
表单发布时输入为空?试试
isset($_POST['name'])等等... -
做过任何基本的调试,比如
var_dump($_POST)看看PHP 收到了什么?另外,你有一个lname字段,但永远不要费心在 PHP 中处理它。 -
你忘了粘贴一些代码吗?您要检索的主题字段在哪里?你有没有试过用 die() 和你的值在这里..??
-
您的 ajax javascript 不能正确发送表单数据,这里是您的代码使用常规 html 表单提交(不是 ajax)正确运行的演示:public-klebestift.c9users.io。您需要在开发人员工具的网络选项卡中检查 ajax 请求并查看发送的内容。
-
当我们说在开发人员工具的网络选项卡中检查 ajax 请求时,这就是您需要寻找的内容:screencast.com/t/kObKaEms4R 但您在“名称”列中寻找的条目应该说“sendemail.php”