Изначально Tech4Lite сохраняет все заявки из контактной формы в админ-панели. Это надежно, но не всегда удобно — ведь хочется получать уведомления о новых клиентах мгновенно. Давайте исправим это, интегрировав самую популярную библиотеку для отправки почты — PHPMailer.
Шаг 1: Подготовка
Для начала вам нужно скачать PHPMailer.
- Перейдите на официальный репозиторий GitHub и скачайте архив.
- В корневой папке сайта создайте директорию libs.
- Из скачанного архива скопируйте папку src в вашу новую папку libs.
Шаг 2: Модификация обработчика формы
Теперь вся магия произойдет в одном файле — submit_form.php. Он отвечает за обработку данных, отправленных пользователем. Замените его содержимое на код, представленный ниже. Этот код не только отправляет email, но и сохраняет заявку в админ-панели, как и раньше.
<?php
// Подключаем PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'libs/src/Exception.php';
require 'libs/src/PHPMailer.php';
require 'libs/src/SMTP.php';
// Подключаем файл для работы с базой данных
require 'db.php';
// Проверяем, что данные пришли методом POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Получаем данные из формы и очищаем их
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$phone = trim($_POST['phone']);
$message = trim($_POST['message']);
// Проверка согласия на обработку данных
if (!isset($_POST['privacy_consent'])) {
header("Location: index.php?status=consent_required#contacts");
exit();
}
// Проверка заполненности полей
if (empty($name) || empty($email) || empty($message)) {
header("Location: index.php?status=error#contacts");
exit();
}
// 1. Сохраняем заявку в базу данных
try {
$stmt = $pdo->prepare("INSERT INTO form_submissions (name, email, phone, message) VALUES (?, ?, ?, ?)");
$stmt->execute([$name, $email, $phone, $message]);
} catch (PDOException $e) {
error_log("DB Save Error: " . $e->getMessage());
}
// 2. Отправляем email-уведомление
$mail = new PHPMailer(true);
try {
// --- НАСТРОЙКИ ВАШЕГО SMTP-СЕРВЕРА ---
$mail->isSMTP();
$mail->Host = 'smtp.yourhost.com'; // SMTP-сервер
$mail->SMTPAuth = true;
$mail->Username = 'email@yourhost.com'; // Ваш email-логин
$mail->Password = 'your_password'; // Ваш пароль
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
// --- Получатели ---
$admin_email = 'admin@yoursite.com'; // Email, на который придет уведомление
$mail->setFrom('email@yourhost.com', 'Форма с сайта');
$mail->addAddress($admin_email);
$mail->addReplyTo(htmlspecialchars($email), htmlspecialchars($name));
// --- Содержимое письма ---
$mail->CharSet = 'UTF-8';
$mail->isHTML(true);
$mail->Subject = 'Новая заявка с сайта от ' . htmlspecialchars($name);
$mail->Body = "
<h2>Новая заявка с вашего сайта</h2>
<p><strong>Имя:</strong> " . htmlspecialchars($name) . "</p>
<p><strong>Email:</strong> " . htmlspecialchars($email) . "</p>
<p><strong>Телефон:</strong> " . (!empty($phone) ? htmlspecialchars($phone) : 'Не указан') . "</p>
<p><strong>Сообщение:</strong><br>" . nl2br(htmlspecialchars($message)) . "</p>
";
$mail->send();
header("Location: index.php?status=success#contacts");
exit();
} catch (Exception $e) {
error_log("Mailer Error: {$mail->ErrorInfo}");
header("Location: index.php?status=error#contacts");
exit();
}
} else {
header("Location: index.php");
exit();
}
?>
Шаг 3: Финальная настройка
В коде выше найдите блок --- НАСТРОЙКИ ВАШЕГО SMTP-СЕРВЕРА --- и замените данные на свои. Эту информацию можно получить у вашего хостинг-провайдера. Также укажите admin_email, на который вы хотите получать письма.
Заключение
Tech4Lite — это не просто конструктор, а мощный инструмент в умелых руках. Он предоставляет прочную SEO-базу, которую легко расширить под конкретные бизнес-задачи. Интеграция почтовых уведомлений — яркий тому пример. Вы получаете быстрый, оптимизированный и функциональный сайт, готовый привлекать клиентов и занимать высокие позиции в поиске.
Комментарии (0)
Комментариев пока нет. Будьте первым!
Чтобы оставлять комментарии, ставить лайки, пожалуйста, или .