S
S
Svetlana Galenko2019-12-17 22:59:54
PHP
Svetlana Galenko, 2019-12-17 22:59:54

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>
<!-- проверка формы. Конец -->

mail.php:
<?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

1 answer(s)
S
Svetlana Galenko, 2019-12-18
@swallow_97

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>
<!-- проверка формы. Конец -->

created a separate mail.php folder with the contents:
<?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 question

Ask a Question

731 491 924 answers to any question