【问题标题】:Mail function sending blank values发送空白值的邮件功能
【发布时间】: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).fade‌​Out(); 
  },'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”

标签: php email


【解决方案1】:

表单提交代码未提交表单数据。这是您提供的代码:

var form = $('.contact-form');
form.submit(function () {
  $this = $(this);
  $.post($(this).attr('action'), function(data) {
    $this.prev().text(data.message).fadeIn().delay(3000).fade‌​Out(); 
  },'json');
  return false; 
});

应该是这样的:

var form = $('.contact-form');
form.submit(function () {
  $this = $(this);
  $.post($(this).attr('action'), $(this).serialize(), function(data) {
    $this.prev().text(data.message).fadeIn().delay(3000).fade‌​Out(); 
  },'json');
  return false; 
});

【讨论】:

    【解决方案2】:

    从定义 $body 的行中删除 echo 从此……

       echo $body = 'Name: ' . $name . "\n\n" . 'Email
    

    到这里……

       $body = 'Name: ' . $name . "\n\n" . 'Email
    

    【讨论】:

    • 为什么会有帮助?它分配变量,然后回显它。
    • 变量没有被分配,只有定义的字符串......脚本中还有一个标题调用,回显会导致输出已经开始有趣。
    • echo $var = value;$var = value; echo $var; 相同。
    • header() 调用在输出之前,所以他不会得到那个警告。
    • 这将导致的唯一问题是在客户端解析 JSON 将失败。但这与邮件的内容无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2014-11-30
    相关资源
    最近更新 更多