首页 > 解决方案 > 如何在php中发送带有多个表单字段的电子邮件

问题描述

我想从我的网站上具有多个表单字段的联系表单发送电子邮件。但我似乎无法做到这一点。这是我的表单 HTML 代码:

  <form class="form-horizontal" action="mail.php" method="post">
  <h2>Quick Contact</h2>
    <div class="form-group">
      <label class="control-label col-sm-2" for="email">Full Name:</label>
      <div class="col-sm-6">
        <input type="text" class="form-control" id="fname" placeholder="Enter Full Name" name="fname">
      </div>
    </div><br>
    <div class="form-group">
      <label class="control-label col-sm-2" for="num">ID Number:</label>
      <div class="col-sm-6">
        <input type="text" class="form-control" id="num" placeholder="Enter ID Number" name="id">
      </div>
    </div><br>
    <div class="form-group">
      <label class="control-label col-sm-2" for="email">Email:</label>
      <div class="col-sm-6">
        <input type="email" class="form-control" id="email" placeholder="Enter Email Address" name="email">
      </div>
    </div><br>
    <div class="form-group">
      <label class="control-label col-sm-2" for="sal">Monthly Salary:</label>
      <div class="col-sm-6">          
        <input type="number" class="form-control" id="sal" placeholder="Enter Salary" name="salary">
        <div class="label label-warning" >Numbers only. Any other characters are not permitted.</div>
      </div>
      
    </div><br>
    <div class="form-group">        
      <div class="col-sm-offset-2 col-sm-10">
        <button type="submit" class="btn btn-danger">Submit</button>
      </div>
    </div>
  </form>

这是我的 PHP 代码,我使用 PHP mail() 发送电子邮件:

<?php

$to = 'mail@gmail.com';
$subject = 'Loan Request';
    $from = $_POST['email']; // required
    $name = $_POST['fname']; // required
    $id = $_POST['id']; // required
    $telephone = $_POST['mobile']; // not required
    $salary = $_POST['salary']; // required

$message = $name." ".$telephone." ".$salary;

$headers = 'From: '.$from."\r\n".
'Reply-To: '.$from."\r\n" ;

// Sending email
if(mail($to, $subject, $from, $message)){
header('Location: http://example.com');
} else{
    echo 'Unable to send email. Please try again.';
}

?>

邮件发送得很好,但是当它进入我的电子邮件时没有显示整个表单详细信息。我想知道如何捕获所有表单字段,因为我打算添加更多表单字段。这是一个很长的表格。

标签: php

解决方案


如果您使用的是 PHP 的mail函数,那么参数应该按此顺序排列。在您的示例中, $headers 参数根本没有传递。

if (mail($to, $subject, $message, $headers)) {
    header('Location: http://example.com');
} else {
    echo 'Unable to send email. Please try again.';
}

推荐阅读