whycode
@whycode
Студент, начинающий программист

Как наладить отправку данных с формы на почту?

Здравствуйте, я студент и мне дали задание сверстать сайтик для школы, я придумал сделать якобы заявки на обучение и суть вопроса в том, как мне реализовать отправку данных из формы на сайте на почту указанную там же, к примеру возраст, имя и т.д, погуглил - сделал бд и файл php, но не работает ничего, так же вопрос нужно ли создавать отдельную почту какую-то для отправки таких писем и все такое, прошу объяснить как можно подробнее, ибо я новичок в этом деле.
код html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
	<link rel="stylesheet" href=css\cs.css>.

</head>
<body>
<div class="form-wrap">
  <div class="profile"><img src="https://evspb.ru/wp-content/uploads/luxury-resorts/alpino/images/4.png">
    <h1>Заявка на обучение</h1>
    <h5>Школа №12</h5>
    <h4>Copyright ©  2022</h4>
  </div>
  <form method="post" action="form.php">
    <div>
      <label for="name">Имя ребёнка</label>
      <input type="text" name="name" required>
    </div>
    <div>
    	<label for="age">Дата рождения ребёнка</label>
      <input type="text" name="age" required>
    </div>
    <div class="radio">
      <span>Пол ребёнка</span>
      <label>
        <input type="radio" name="sex" value="мужской">мужской
        <div class="radio-control male"></div>
      </label>
      <label>
        <input type="radio" name="sex" value="женский">женский
        <div class="radio-control female"></div>
      </label>
    </div>
    <div>
      <label for="email">Ваш E-mail</label>
      <input type="email" name="email" required>
    </div>
    <div>
      <label for="country">Район проживания</label>
      <input type="country" name="country" required>
        
      </select> 
      <div class="select-arrow">
      </div> 
    </div> 
    <button type="submit">Отправить</button> 
  </form> 
</div>
</body>
</html>

Код php
$name = trim(strip_tags($_POST["name"]));
  $age = trim(strip_tags($_POST["age"]));
  $sex = trim(strip_tags($_POST["sex"]));
  $email = trim(strip_tags($_POST["email"]));
  $country = trim(strip_tags($_POST["country"]));
  $subject = "Заявка на обучение в школе №12";
  $msg = "Ваши данные формы регистрации:\n" ."Имя: $name\n" ."Дата рождения: $age/n". "Пол: $sex\n" ."Ваш email: $email\n" ."Район проживания: $country/n";
  $headers = "Content-type: text/plain; charset=UTF-8" . "\r\n";
  $headers .= "From:  (не знаю что сюда)" . "\r\n";
  $headers .= "(не знаю что сюда)". "\r\n";   
  if(!empty($name) && !empty($sex) && !empty($email) && !empty($country) && filter_var($email, FILTER_VALIDATE_EMAIL)){
    mail($email, $subject, $msg, $headers);
    echo "ggg.";
    }
  • Вопрос задан
  • 727 просмотров
Решения вопроса 1
@Anton1863
Если вкратце, то важно знать, где находится ваш сайт, если используете ПО на Windows вроде Open Server, то там в настройках нужно прописать почту, сервер и порт, через которые будут отсылаться письма, иначе письма будут собираться в текстовый файлик просто.
Если же у вас обычный хостинг, то почтовый сервер там настроен как правило.
Если же VDS или арендованный физический сервер, то скорее всего сервер придется настраивать самому.
Либо же, как вам предложили выше, использовать библиотеку PHPMailer, где нужно будет также указать в настройках адрес почты, сервер и порт.
По поводу кода, в глаза бросился одинокий закрывающий тэг "select" без открывающего.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
zkrvndm
@zkrvndm
Архитектор решений
Просто используй Яндекс Формы и встрой их на свой сайт, самый простой вариант.

https://yandex.ru/forms/mobile
Ответ написан
Sadyrbaev
@Sadyrbaev
Все очень просто, не нужен тебе никакой phpmailer, но конечно нужен домен, если ты студент лучше купи себе домен и хостинг за копейки ru, website и т.д. и старайся все тестировать на нем, т.е. в реальных условиях, разрабатывай например на openserver, а тестируй на реальном, так намного лучше и быстрее все поймешь. Если домен у тебя есть то все делается буквально в несколько строк кода.

На хостинге просто создай почту с доменом, например info@домен
Письма должны отправляться именно с почты домена.

$domen = 'ruslan.website'; // Домен
$to = 'arman.sadyrbaev@mail.ru'; // Кому
$from = 'info@' . $domen; // От кого

 // Переменные с формы
$subject = 'Заказ с сайта';
$name = $_POST['name'];
$phone = $_POST['phone'];
$message = $_POST['message'];

// Вид письма
$mail_to_myemail = '

Имя: ' . $name . '
Телефон: ' . $phone . '
Сообщение: ' . $message . '

';

$headers = "From: $from \r\n";

mail($to, $subject, $mail_to_myemail, $headers . 'Content-type: text/plain; charset=utf-8');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы