WPForms: настройка отправки формы по Email с использованием PHPMailer

Почему стандартная отправка email в WPForms может не работать надежно

WPForms по умолчанию использует функцию wp_mail() для отправки писем с форм. Однако на многих хостингах эта функция настроена не оптимально или ограничена, что может приводить к попаданию писем в спам или их полной недоставке. Особенно это актуально для сложных форм с вложениями или большим объемом данных.

В таких случаях рекомендуется использовать PHPMailer — мощную библиотеку для отправки email, которая позволяет настроить SMTP, использовать аутентификацию и шифрование, а также детально управлять заголовками и содержанием писем.

Далее рассмотрим, как интегрировать PHPMailer в обработчик WPForms для надежной отправки писем с форм.

Подключение PHPMailer к WPForms: пошаговое руководство

Для начала убедитесь, что в вашей теме или плагине вы можете подключить PHPMailer. В WordPress PHPMailer уже встроен и доступен через глобальный объект $phpmailer.

Ниже пример функции, которая перехватывает отправку формы WPForms и отправляет письмо вручную через PHPMailer с настройкой SMTP сервера:

add_action('wpforms_process_complete', 'wpform_ru_send_email_phpmailer', 10, 4);
function wpform_ru_send_email_phpmailer($fields, $entry, $form_data, $entry_id) {
    // Проверяем ID формы, чтобы обработать нужную
    if ($form_data['id'] != 123) {
        return;
    }
    
    // Формируем тело письма из полей формы
    $body = "Получена новая заявка из формы:\n";
    foreach ($fields as $field) {
        $body .= $field['name'] . ': ' . $field['value'] . "\n";
    }

    // Подключаем глобальный объект PHPMailer
    global $phpmailer;
    if (! ( $phpmailer instanceof PHPMailer\PHPMailer\PHPMailer )) {
        require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
        require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
        require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
        $phpmailer = new PHPMailer\PHPMailer\PHPMailer(true);
    }

    try {
        // Настройка SMTP
        $phpmailer->isSMTP();
        $phpmailer->Host = 'smtp.yourdomain.com'; // SMTP сервер
        $phpmailer->SMTPAuth = true;
        $phpmailer->Username = 'user@yourdomain.com'; // Логин SMTP
        $phpmailer->Password = 'yourpassword'; // Пароль SMTP
        $phpmailer->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
        $phpmailer->Port = 587;

        // От кого
        $phpmailer->setFrom('no-reply@yourdomain.com', 'WPForms');
        // Кому
        $phpmailer->addAddress('admin@yourdomain.com', 'Администратор');

        $phpmailer->Subject = 'Новая заявка с формы на сайте';
        $phpmailer->Body    = $body;

        $phpmailer->send();
    } catch (Exception $e) {
        error_log('WPForm RU PHPMailer error: ' . $phpmailer->ErrorInfo);
    }
}

Этот код нужно добавить в файл functions.php вашей темы или в кастомный плагин. В нем мы слушаем событие успешной отправки формы, фильтруем нужную форму по ID и самостоятельно формируем письмо и отправляем его через PHPMailer с SMTP.

Как узнать ID формы WPForms и настроить SMTP

ID формы можно узнать в админке WPForms — при просмотре списка форм кликните на нужную, в URL будет параметр id=123 или посмотрите в списке форм.

Настройки SMTP зависят от вашего почтового провайдера. Например, для Gmail:

  • Host: smtp.gmail.com
  • Port: 587 (TLS) или 465 (SSL)
  • Username и Password: ваш аккаунт Gmail
  • SMTPSecure: 'tls' или 'ssl'

Рекомендуется создавать отдельный почтовый ящик для отправки уведомлений с сайта.

Расширение кода: добавление вложений из WPForms

Если форма содержит поля загрузки файлов, их можно прикрепить к письму. Например, с учетом что поле с загрузкой имеет ID 5:

foreach ($fields as $field) {
    if ($field['id'] == 5 && !empty($field['value'])) {
        $upload_dir = wp_upload_dir();
        $file_path = $upload_dir['basedir'] . '/' . $field['value'];
        if (file_exists($file_path)) {
            $phpmailer->addAttachment($file_path);
        }
    }
}

Этот код вставьте перед вызовом $phpmailer->send(); чтобы прикрепить файл к письму.

Преимущества использования PHPMailer с WPForms

  • Гарантированная доставка писем благодаря SMTP с аутентификацией.
  • Возможность кастомизировать заголовки, тело и формат письма.
  • Поддержка вложений и HTML-формата.
  • Логирование ошибок отправки для отладки.

Если вы хотите более простой способ настройки SMTP в WordPress, можно использовать плагин Clearfy Pro, который позволяет быстро подключить SMTP без кода.

WPForms и WooCommerce: как передать дополнительные поля из формы в заказ
14.06.2026
WPForms: как создать уникальный тип поля для форм в WordPress
21.01.2026
WPForms отладка проблем с переадресацией после отправки формы в WordPress
06.12.2025
WPForms: как собирать данные из нескольких форм в одну таблицу WordPress
20.02.2026
WPForms: ограничение количества отправок формы одним пользователем в WordPress
16.05.2026