Почтовая форма PHP не работает

Мой HTML: Полное имя

<div class="row"> <div class="label"> Age </div> <div class="input"> <input type="text" id="age" class="detail" name="age" value="" /> </div> </div> <div class="row"> <div class="label"> Gender </div> <div class="input"> Male:<input type="radio" id="radio1" name="gender" value="" /> Female:<input type="radio" id="radio2" name="gender" value="" /> </div> </div> <div class="row"> <div class="label"> Department </div> <div class="select"> <select id="department" class="detail" name="department" value="" /> <option>Please select below</option> <option>xxxx</option> <option>xxxx</option> </select> </div> </div> <div class="row"> <div class="label"> Who do you want to consult </div> <div class="select"> <select id="consult" class="detail" name="consult" value="" /> <option>xxxx</option> <option>xxxx</option> <option>xxxxy</option> <option>xxxxx</option> <option>xxx</option> <option>xxxxx</option> </select> </div> </div> <div class="row"> <div class="label"> When do you want to visit us</div> <div class="date"> <input type="date" id="date" class="detail" name="date" value="" /> </div> </div> <div class="row"> <div class="label"> Do you have any specific requests or needs</div> <div class="request"> <input type="text" id="request" class="detail" name="request" value="" /> </div> </div> <div class="row"> <div class="label"> When is a good time to call you</div> <div class="time"> <input type="time" id="time" class="detail" name="time" value=""> </div> </div> <div class="row"> <div class="label"> E-mail </div> <div class="input"> <input type="email" id="email" class="detail" name="email" value="" /> </div> </div> <div class="row"> <div class="label"> Phone number </div> <div class="input"> <input type="tel" id="tel" class="detail" name="tel" value=""> </div> </div> <div id="submit-reset"> <input type="submit" id="submit" name="submit" value="Submit Form" /> <input type="reset" id="reset" name="reset" value="Reset" /> </div> </form> 

Мне сложно настроить PHP-часть для этого кода PHP:

 $fullname = $_POST['fullname']; $age = $_POST['age']; $gender = $_POST['gender']; $department = $_POST['department']; $consult = $_POST['consult']; $date = $_POST['date']; $request = $_POST['request']; $time = $_POST['time']; $email = $_POST['email']; $tel = $_POST['tel']; $to = "example@email.com"; $subject = "message goes here"; mail ($to, $subject, "From: " .$fullname); echo "message sent" ?> 

При тестировании с моим идентификатором почты он показывает, что сообщение отправлено, но я вообще не получаю почту. Пожалуйста, помогите мне в этом. Я новичок в php, поэтому я не знаю, как это работает вообще 🙁 Также любые оценки валидации были бы высоко оценены.

Related of "Почтовая форма PHP не работает"

В вашей HTML-форме отсутствует тег начальной формы. убедитесь, что ваша форма html начинается с тега формы и метода – сообщение с действием – это имя файла сценария php mail.

Пример: <form method="post" action="mail.php"> .. .. .. .. </form>

и в mail.php введите почтовый скрипт следующим образом.

 $fullname = $_POST['fullname']; $age = $_POST['age']; $gender = $_POST['gender']; $department = $_POST['department']; $consult = $_POST['consult']; $date = $_POST['date']; $request = $_POST['request']; $time = $_POST['time']; $email = $_POST['email']; $tel = $_POST['tel']; $to = "example@email.com"; $subject = "message goes here"; $message="Name: ".$fullname."<br/>Age: ".$age,"<br/>Gender",$gender."<br/>Phone".$phone."<br/>Dept:".$department; if(mail ($to, $subject,$message, "From: " .$fullname)){ echo "Success"; } else { echo "not sent"; } 

Также убедитесь, что почтовый сервер php настроен правильно.

Если вы тестируете его на localhost на компьютере с windows/Linux тогда вы должны сначала настроить свой SMTP-параметр и включить отправку почты с localhost.

Если вы тестируете его на реальном сервере, обратитесь к поставщику услуг, чтобы включить отправку писем

Вы не указали свою среду, но можете попробовать отправить ее в командной строке и посмотреть, идет ли почта. Я подозреваю, что ваш сервер не может использовать почту в php. Вы можете попробовать использовать smtp-почту в качестве опции. Вот отличный класс почты https://github.com/PHPMailer/PHPMailer, надеюсь, это поможет

Я думаю, вам нужно добавить «От» как адрес на вашем сервере и поместить заголовок «Reply-to», чтобы при получении электронной почты в папке «Входящие» вы можете ответить на него обычным способом.

Насколько я могу видеть вместо «От» на вашем сервере, у вас есть полное имя из формы.

Чтобы процитировать @ nana-partykar для части сообщения – замените с $message на:

  $message="Name: ".$fullname."<br/>Age: ".$age,"<br/>Gender",$gender."<br/>Phone".$phone."<br/>Dept:".$department; $your_email = 'your_email@your_server.com'; $headers = "From: $your_email" . "\r\n"; // Additional headers $headers .= "Reply-To: $email" . "\r\n"; if(mail($to,$subject,$message,$headers)){ echo "Success"; } else { echo "not sent"; } 

http://php.net/manual/en/function.mail.php

Вы также можете попробовать настроить пользователя sendmail в верхней части вашего скрипта:

  ini_set('sendmail_from', 'your_email@your_server.com'); 

http://php.net/manual/en/book.mail.php

Что касается проверки, вы можете очистить то, что подано, чтобы допускать только буквы, цифры и несколько других символов:

  $email = preg_replace("[^a-zA-Z0-9@._-]",'',$_POST['email']); 

и, по крайней мере, убедитесь, что основной адрес электронной почты не пуст, обернув часть почты:

  if($email != ""){ if(mail....to the end } 

Если вы помещаете какую-либо полученную информацию в базу данных, вам необходимо убедиться, что она также не содержит кода атаки

Как я могу предотвратить SQL-инъекцию в PHP?

Я бы предложил, чтобы он работал первым, прежде чем вы это сделаете … но сделайте это!