Tech4Mania
UserПочта TechБлог Магазин
Расширяем функциональность: Интеграция PHPMailer

Расширяем функциональность: Интеграция PHPMailer

Tech4Mania
01.10.2025
46

Изначально Tech4Lite сохраняет все заявки из контактной формы в админ-панели. Это надежно, но не всегда удобно — ведь хочется получать уведомления о новых клиентах мгновенно. Давайте исправим это, интегрировав самую популярную библиотеку для отправки почты — PHPMailer.

Шаг 1: Подготовка

Для начала вам нужно скачать PHPMailer.

  1. Перейдите на официальный репозиторий GitHub и скачайте архив.
  2. В корневой папке сайта создайте директорию libs.
  3. Из скачанного архива скопируйте папку src в вашу новую папку libs.

Шаг 2: Модификация обработчика формы

Теперь вся магия произойдет в одном файле — submit_form.php. Он отвечает за обработку данных, отправленных пользователем. Замените его содержимое на код, представленный ниже. Этот код не только отправляет email, но и сохраняет заявку в админ-панели, как и раньше.

<?php// Подключаем PHPMaileruse 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';
// Проверяем, что данные пришли методом POSTif ($_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)

Комментариев пока нет. Будьте первым!

Чтобы оставлять комментарии, ставить лайки, пожалуйста, или .