Добавить поля ввода формы в E-mail с помощью PHP и Jquery

Я использовалЭтот учебник по созданию контактной формы на моем сайте. К сожалению, количество полей для меня недостаточно, поэтому я добавил в форму компанию и поле темы.

Однако .. Я не могу получить вывод почты, работающий с дополнительными полями.

Быстрый обзор:

HTML:

Each input field in the HTML is based on the following piece of lines:
  <label>Subject</label>
  <input type="text" id="subject" placeholder="What's up?"></div>

JQuery:

The full jQuery code is:
$(document).ready(function() {
    // Contact Form
$("#contactform").submit(function(e){
  e.preventDefault();
  var name = $("#name").val();
  var company = $("#company").val();
  var email = $("#email").val();
  var subject = $("#subject").val();
  var text = $("#text").val();
  var dataString = 'name=' + name + + '&company' + company + '&email=' + email + '&subject' + subject + '&text=' + text;
  function isValidEmail(emailAddress) {
    var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
    return pattern.test(emailAddress);
  };

  if (isValidEmail(email) && (text.length > 25) && (name.length > 1)){
    $.ajax({
    type: "POST",
    url: "js/functions.php",
    data: dataString,
    success: function(){
      $('.success').fadeIn(1000);
    }
    });
  } else{
    $('.error').fadeIn(1000);
  }

  return false;
});

});

И весь скрипт functions.php:

<?php
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['text']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {

// detect & prevent header injections
$test = "/(content-type|bcc:|cc:|to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
  exit;
}
  }

  //send email
  mail( "[email protected]", "New message: ".$_POST['name'], $_POST['text'], "From:" . $_POST['email'] );

}
?>

Итак, вот где мы находимся: форма отправляется, и я получаю письмо, однако дополнительные поля ($ ('subject)) и $ (' # company ')) не отображаются в электронном письме.

Итак, есть две вещи, которые я хочу достичь в этой теме: 1) Поля «Тема» и «Компания» появляются в сообщении электронной почты. 2) Получаемое письмо имеет следующую структуру:

Subject line: 'You received a new message: ' + 'subject'

Message body: 'You received a new mail via your contact form<br/>
Name: 'name'
Company: 'company'
Reply to: 'email'
Subject: 'subject'
Message: 'text'

Я попытался настроить линию - потому что я думал, что это решит все это:

//send email
  mail( "[email protected]", "New message: ".$_POST['name'], $_POST['text'], "From:" . $_POST['email'] );

Но удача была не со мной. Итак, основываясь на приведенных выше фрагментах кода, какие строки мне нужно настроить и что мне нужно добавить?

Большое спасибо, ребята!

Ответы на вопрос(3)

Ваш ответ на вопрос