【问题标题】:Return message status in page after send mail with php使用php发送邮件后在页面中返回消息状态
【发布时间】:2016-12-06 06:17:12
【问题描述】:

我尝试在发送电子邮件后在 html 页面中显示消息。 我不想使用带有警报的javascript,只是发送按钮后的简单消息。

我用这段代码创建了一个联系 php 页面:

<?php

$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_telefon = $_POST['cf_telefon'];
$field_message = $_POST['cf_message'];
$mail_to = 'diaconu.eduardstefan@gmail.com';;
$from = 'Mesaj nou de la:'.$field_name;
$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Telefon: '.$field_telefon."\n";
$body_message .= 'Message: '.$field_message;
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$mail_status = mail($mail_to, $from, $body_message, $headers);

 ?>

在 html 页面中,我插入了一个带有此代码的联系表单:

       <form  action="contact.php" method="post">
                        <div class="form-group">
                            <label for="name">
                                Nume
                            </label>
                            <input type="text" name="cf_name" placeholder="" id="name" class="form-control" required="true">
                        </div>
                        <div class="form-group">
                            <label for="email">
                                Email
                            </label>
                            <input type="text" name="cf_email"  placeholder="" id="email" class="form-control" required="true">
                        </div>
                        <div class="form-group">
                            <label for="phone">
                                Telefon
                            </label>
                            <input type="text" name="cf_telefon" id="phone" class="form-control">
                        </div>
                        <div class="form-group">
                            <label for="phone">
                                Mesaj
                            </label>
                            <textarea name="cf_message" placeholder="" rows="5" class="form-control" required="true">
                            </textarea>
                        </div>

                        <input class="btn btn-info" type="submit" value="Trimite" >
<?php if($send_mail) {
if($mail_status){
print "succes";
exit();
}
else {
print "eroare";
}
        }       
?>
                    </form>

电子邮件已成功发送,但未显示消息。按下发送按钮后,联系表格返回一个空白页面。我想返回带有消息的同一页面。 (刷新)

也许存在另一种方法来做到这一点?用 get 或类似的东西?

感谢您的帮助!

【问题讨论】:

标签: php contact


【解决方案1】:
    if($_POST){
      // send mail code here
      $field_name = $_POST['cf_name'];
      $field_email = $_POST['cf_email'];
      $field_telefon = $_POST['cf_telefon'];
      $field_message = $_POST['cf_message'];
      $mail_to = 'diaconu.eduardstefan@gmail.com';;
      $from = 'Mesaj nou de la:'.$field_name;
      $body_message = 'From: '.$field_name."\n";
      $body_message .= 'E-mail: '.$field_email."\n";
      $body_message .= 'Telefon: '.$field_telefon."\n";
      $body_message .= 'Message: '.$field_message;
      $headers = 'From: '.$field_email."\r\n";
      $headers .= 'Reply-To: '.$field_email."\r\n";
      $mail_status = mail($mail_to, $from, $body_message, $headers);
      if($mail_status){
       echo 'mail send';
      }else{
       echo 'mail not send';
      }
    }

    //place html code here below the php code
           <form  action="" method="post">
                        <div class="form-group">
                            <label for="name">
                                Nume
                            </label>
                            <input type="text" name="cf_name" placeholder="" id="name" class="form-control" required="true">
                        </div>
                        <div class="form-group">
                            <label for="email">
                                Email
                            </label>
                            <input type="text" name="cf_email"  placeholder="" id="email" class="form-control" required="true">
                        </div>
                        <div class="form-group">
                            <label for="phone">
                                Telefon
                            </label>
                            <input type="text" name="cf_telefon" id="phone" class="form-control">
                        </div>
                        <div class="form-group">
                            <label for="phone">
                                Mesaj
                            </label>
                            <textarea name="cf_message" placeholder="" rows="5" class="form-control" required="true">
                            </textarea>
                        </div>

                        <input class="btn btn-info" type="submit" value="Trimite" >

                    </form>

【讨论】:

  • 感谢您的回复!我将您的代码插入到 contact.php 中,现在,按下发送按钮后,我有一个带有消息状态的新页面,我不想要这个。我想在发送按钮后(按下按钮后)显示消息。为此,有必要在 html 页面中添加我的代码......也许是为了创建一个会话或类似的东西来存储信息。
  • 这意味着你不想重定向你的页面,实际上你想在同一页面上显示你的消息,当有人点击发送按钮时?
  • 是的。 :) 我想要的。
  • 所以你可以在 Ajax 的帮助下实现这一目标
  • 是的,这是一个选项...但我认为在消息成功发送的同一页面上按下按钮后返回更简单。
【解决方案2】:

将您的 PHP 放在联系表单所在页面的顶部。

然后更改:&lt;form action="contact.php" method="post"&gt;

&lt;form action="" method="post"&gt;

您还需要在提交按钮字段中添加name="submit",然后换行:

if (isset($_POST['submit'])) {

// code

}

此外,如果您要确保人们填写所有字段,您应该使用

if (!empty($var))
{
// code
} else
echo "Fill in this field please";
}

只需在 html 端使用 required 即可轻松绕过必填字段。

编辑:一旦所有条件都满足,您可以简单地在 mail() 字段下方添加 echo "thanks" 或任何您想要的消息,成功消息将输出到表单上方的页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 2015-02-02
    • 2021-02-13
    • 2015-12-23
    • 2020-12-04
    相关资源
    最近更新 更多