Не отправляются письма из формы на почту?

Здравствуйте, помогите пожалуйста разобраться почему не приходят письма на почту?
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 = 'mymail@mail.ru';

    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;
}
?>
  • Вопрос задан
  • 392 просмотра
Решения вопроса 1
swallow_97
@swallow_97 Автор вопроса
Может кому пригодится.. Я использовала готовую библиотеку phpMailer, настроила, но HTML-форма и PHP находились в одном файле и отправляли пустые значения при загрузке начальной страницы..
Теперь решение выглядит так:
в 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
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 = 'mail@yandex.ru'; //ящик на который будут приходить письма
$mail->Password = 'XXXXXXXX'; //пароль от ящика

$subject = 'Письмо';
$subject = '=?utf-8?b?'. base64_encode($subject) .'?=';

$mail->setFrom(''mail@mail.ru, 'mysite.ru');    // от кого

// Кому
$mail->addAddress('mail@mail.ru', '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;
}
?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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