Может кому пригодится.. Я использовала готовую библиотеку 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;
}
?>