Answer the question
In order to leave comments, you need to log in
Emails are not sent from the form to the mail?
Hello, please help me figure out why the letters are not coming to the mail?
index.php
<form action="mail.php" method="post" onSubmit="return checkForm(this)">
<div class="col-12">
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="name">Имя:</label>
<input type="text" name="name" class="form-control" id="exampleFormControlInput1" placeholder="Ваше Имя">
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="email">Имя:</label>
<input type="text" name="email" class="form-control" id="exampleFormControlInput12" placeholder="Ваш E-mail">
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="phone">Имя:</label>
<input type="text" name="phone" class="form-control" id="exampleFormControlInput12" placeholder="Ваш Номер Телефона">
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="message">Имя:</label>
<textarea class="form-control" name="message" id="exampleFormControlTextarea14" rows="3" placeholder="Сообщение"></textarea>
</div>
</div>
</div>
</div>
<div class="submit-join">
<button type="submit" class="btn btn-secondary">Отправить</button>
</div>
</form>
<!-- проверка формы. Начало -->
<script>
function checkForm(form) {
var name = form.name.value;
var n = name.match(/^[A-Za-zА-Яа-я ]*[A-Za-zА-Яа-я ]+$/);
if (!n) {
alert("Имя введено неверно, пожалуйста исправьте ошибку");
return false;
}
var phone = form.phone.value;
var p = phone.match(/^[0-9+][0-9- ]*[0-9- ]+$/);
if (!p) {
alert("Телефон введен неверно");
return false;
}
var email = form.email.value;
var m = email.match(/^[A-Za-z0-9][A-Za-z0-9\._-]*[A-Za-z0-9_]*@([A-Za-z0-9]+([A-Za-z0-9-]*[A-Za-z0-9]+)*\.)+[A-Za-z]+$/);
if (!m) {
alert("E-mail введен неверно, пожалуйста исправьте ошибку");
return false;
}
return true;
}
</script>
<!-- проверка формы. Конец -->
<?php
$back = "<p><a href=\"javascript: history.back()\">Вернуться назад</a></p>";
if (!empty($_POST['name']) and !empty($_POST['phone']) and !empty($_POST['email'])
and !empty($_POST['message'])) {
$name = trim(strip_tags($_POST['name']));
$phone = trim(strip_tags($_POST['phone']));
$email = trim(strip_tags($_POST['email']));
$message = trim(strip_tags($_POST['message']));
$to = '[email protected]';
mail($to, 'Письмо с адрес_вашего_сайта',
'Вам написал: ' . $name . '<br />Его номер: ' . $phone . '<br />Его почта: ' . $email . '<br />
Его сообщение: ' . $message, "Content-type:text/html;charset=utf-8");
echo "Ваше сообщение успешно отправлено!<Br> Вы получите ответ в
ближайшее время<Br> $back";
exit;
} else {
echo "Для отправки сообщения заполните все поля! $back";
exit;
}
?>
Answer the question
In order to leave comments, you need to log in
Maybe it will come in handy for someone.. I used the ready-made phpMailer library, configured it, but the HTML form and PHP were in the same file and sent empty values when loading the initial page.
Now the solution looks like this:
there is a simple feedback form in index.php:
<form action="mail.php" method="post" onSubmit="return checkForm(this)">
<div class="col-12">
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="name">Имя:</label>
<input type="text" name="name" class="form-control" id="exampleFormControlInput1" placeholder="Ваше Имя">
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="email">Имя:</label>
<input type="text" name="email" class="form-control" id="exampleFormControlInput12" placeholder="Ваш E-mail">
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="phone">Имя:</label>
<input type="text" name="phone" class="form-control" id="exampleFormControlInput12" placeholder="Ваш Номер Телефона">
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="message">Имя:</label>
<textarea class="form-control" name="message" id="exampleFormControlTextarea14" rows="3" placeholder="Сообщение"></textarea>
</div>
</div>
</div>
</div>
<div class="submit-join">
<button type="submit" class="btn btn-secondary">Отправить</button>
</div>
</form>
<!-- проверка формы. Начало -->
<script>
function checkForm(form) {
var name = form.name.value;
var n = name.match(/^[A-Za-zА-Яа-я ]*[A-Za-zА-Яа-я ]+$/);
if (!n) {
alert("Имя введено неверно, пожалуйста исправьте ошибку");
return false;
}
var phone = form.phone.value;
var p = phone.match(/^[0-9+][0-9- ]*[0-9- ]+$/);
if (!p) {
alert("Телефон введен неверно");
return false;
}
var email = form.email.value;
var m = email.match(/^[A-Za-z0-9][A-Za-z0-9\._-]*[A-Za-z0-9_]*@([A-Za-z0-9]+([A-Za-z0-9-]*[A-Za-z0-9]+)*\.)+[A-Za-z]+$/);
if (!m) {
alert("E-mail введен неверно, пожалуйста исправьте ошибку");
return false;
}
return true;
}
</script>
<!-- проверка формы. Конец -->
<?php
require_once 'PHPMailer/PHPMailerAutoload.php';
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$phone = trim($_POST['phone']);
$message = trim($_POST['message']);
$mail = new PHPMailer;
$mail->CharSet = 'UTF-8';
// Настройки SMTP
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = 0;
$mail->Host = 'ssl://smtp.yandex.ru';
$mail->Port = 465;
$mail->Username = '[email protected]'; //ящик на который будут приходить письма
$mail->Password = 'XXXXXXXX'; //пароль от ящика
$subject = 'Письмо';
$subject = '=?utf-8?b?'. base64_encode($subject) .'?=';
$mail->setFrom(''[email protected], 'mysite.ru'); // от кого
// Кому
$mail->addAddress('[email protected]', 'mysite.ru');
// Тема письма
$mail->Subject = $subject;
$mail->Body = $body;
// тело письма
$body = "Получено письмо с сайта mysite.ru \n Имя: $name \n Телефон: $phone \n E-mail: $email \n Сообщение: $message";
$mail->msgHTML($body);
// Отправляем
if ($mail->send()) {
echo 'Письмо отправлено!';
} else {
echo 'Ошибка: ' . $mail->ErrorInfo;
}
?>
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question