Он отправляет почту ничего в нем (или отсутствующая информация), если вы загрузите его сразу, и это связано с конкретной причиной.
В порядке вещей, ваш код отправит вам электронное письмо, как только вы загрузите страницу, так что лучше всего обернуть ваш (PHP) код внутри isset()
, чтобы работать вместе с кнопкой (named) submit, которая кажется чтобы отсутствовать в вашем первоначально размещенном вопросе/коде.
Кроме того, у вас есть две неопределенные переменные:
$mine
и $flygt
, так что вам необходимо определить те, в соответствии с вашими потребностями.
т.е .: if(isset($_POST['submit']))
и <input type="submit" name="submit" value="Send">
Sidenote: Это лучше проверить для пустых полей, но это другая тема; см. мои сноски.
испытано и работать, и получать всю информацию, и я заменил свою нынешнюю функцию почты с if(mail($to, $subject, $emailBody, $headers)){...}
<form id='SimpleEcommCartCartForm' action="" method="post">
<div id="emailForm">
<p>Please fill out the form below and one of our associates will contact you with more information.</p>
<div class="col-xs-4">
Name: <input type="text" name="name" id="name">
</div>
<div class="col-xs-4">
E-mail: <input type="email" name="email" id="email">
</div>
<div class="col-xs-4">
Phone: <input type="tel" name="phone" id="phone">
<input type="submit" name="submit" value="Send">
</div>
</div>
</form>
<?php
//Send the email
if(isset($_POST['submit'])){
$to = "[email protected]";
$name = $_POST['name'] ;
$from = $_POST['email'] ;
$phone = $_POST['phone'] ;
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: $from";
$subject = "Pump Part Inquiry";
// $mine = " Mine variable"; // replace this
// $flygt = " Flygt variable"; // replace this
$emailBody = "
<html>
<head>
<style>
</style>
</head>
<body>
<h1> Pump Inquiry</h1>
<h3>From:".$name."<h3>
<h3>Phone:".$phone."<h3>
<p>Minetuff Parts".$mine."</p>
<p>Flygt Parts".$flygt."</p>
</body>
</html>";
// $send = mail($to, $subject, $emailBody, $headers);
if(mail($to, $subject, $emailBody, $headers)){
echo "Mail sent.";
}
else{
echo "Sorry, something went wrong.";
}
} // brace for if(isset($_POST['submit']))
?>
Если вы все еще возникают проблемы:
Добавить error reporting в начало файла (ы) сразу после вашего открытия <?php
тег, который поможет во время производственных испытаний.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Сноски:
Вы открыты для XSS attacks (Межсайтовый скриптинг).
Используйте функцию следующим образом (PHP) фильтр: FILTER_SANITIZE_FULL_SPECIAL_CHARS
$name = filter_var($_POST['name'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
эквивалентно вызову htmlspecialchars()
с ENT_QUOTES
набором. Кодировка котировок может быть отключена установкой.
Чтобы проверить наличие пустых полей, вы можете добавить это ниже if(isset($_POST['submit'])){
if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['phone'])){
echo "Fill out all the fields";
exit;
}
||
означает «ИЛИ», которые вполне могли бы быть заменены OR
если вы хотите, однако ||
имеет преимущество более OR
.
Это очень простой метод; есть и другие способы достижения этого, но вы получаете суть этого.
Это отправляет электронное письмо, но по-прежнему ничего не отображается из переменных $ _POST [''] – Packy
Он отправляет почту без ничего, если вы сразу ее загрузите, это нормально и по нескольким причинам. –