Как настроить отправку писем через SMTP в WordPress без плагинов

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

Почему стоит использовать SMTP для отправки писем WordPress

Стандартный метод отправки почты через PHP mail() часто блокируется или помечается как спам, потому что:

  • Почтовый сервер не аутентифицирует отправителя.
  • Провайдеры хостинга могут ограничивать исходящую почту.
  • Отсутствуют необходимые заголовки для корректной работы SPF, DKIM, DMARC.

SMTP позволяет использовать учетные данные почтового сервера, что значительно снижает вероятность попадания писем в спам и повышает стабильность доставки.

Настройка SMTP в WordPress без плагинов

Чтобы подключить SMTP без плагинов, нужно переопределить функцию wp_mail() с помощью собственного обработчика, использующего PHPMailer, который уже встроен в WordPress.

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wproot_wp_mail_smtp( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.example.com'; // SMTP сервер
    $phpmailer->SMTPAuth   = true;              // Включение авторизации
    $phpmailer->Port       = 587;               // Порт SMTP
    $phpmailer->Username   = 'your-email@example.com'; // Логин
    $phpmailer->Password   = 'your-password';           // Пароль
    $phpmailer->SMTPSecure = 'tls';              // Защита: tls или ssl
    $phpmailer->From       = 'your-email@example.com'; // Адрес отправителя
    $phpmailer->FromName   = 'Ваш сайт';          // Имя отправителя
}
add_action( 'phpmailer_init', 'wproot_wp_mail_smtp' );

В этом коде мы настраиваем PHPMailer на использование SMTP с вашими параметрами. Замените smtp.example.com, your-email@example.com и your-password на реальные данные вашего почтового сервера.

Пояснения к параметрам SMTP

  • Host — адрес SMTP сервера (например, smtp.gmail.com для Gmail).
  • Port — порт, обычно 587 (TLS) или 465 (SSL).
  • SMTPAuth — включает аутентификацию.
  • Username и Password — логин и пароль почтового ящика.
  • SMTPSecure — тип шифрования (tls или ssl).
  • From и FromName — адрес и имя отправителя, отображаемые в письмах.

Пример отправки тестового письма в WordPress

Чтобы проверить работу настроек, создайте файл test-email.php в корне сайта или используйте консоль WP-CLI, вызвав функцию wproot_send_test_email():

function wproot_send_test_email() {
    $to      = 'receiver@example.com';
    $subject = 'Тестовое письмо SMTP';
    $message = 'Это тестовое письмо, отправленное через SMTP в WordPress без плагинов.';
    $headers = array('Content-Type: text/html; charset=UTF-8');
    $sent = wp_mail( $to, $subject, $message, $headers );
    if ( $sent ) {
        echo 'Письмо успешно отправлено!';
    } else {
        echo 'Ошибка при отправке письма.';
    }
}
wproot_send_test_email();

Замените receiver@example.com на свой реальный email для теста.

Отладка и решение проблем отправки почты SMTP

Если письма не отправляются, проверьте следующие моменты:

Проверка ошибок PHPMailer

Для вывода подробных ошибок добавьте в функцию инициализации SMTP следующий код:

function wproot_wp_mail_smtp_debug( $phpmailer ) {
    wproot_wp_mail_smtp( $phpmailer );
    $phpmailer->SMTPDebug = 2; // Включить отладку
    $phpmailer->Debugoutput = function($str, $level) {
        error_log( 'SMTP Debug: ' . $str );
    };
}
remove_action( 'phpmailer_init', 'wproot_wp_mail_smtp' );
add_action( 'phpmailer_init', 'wproot_wp_mail_smtp_debug' );

Логи ошибок будут сохраняться в файле журнала PHP (error_log). Это поможет понять причину сбоев.

Проверка конфигурации почтового сервера

Убедитесь, что:

  • Ваш SMTP сервер доступен и принимает подключения.
  • Логин и пароль верны.
  • Порт и тип шифрования соответствуют настройкам сервера.
  • Настроены SPF, DKIM, DMARC для домена, чтобы письма не попадали в спам.

Использование сторонних SMTP серверов

Можно использовать бесплатные SMTP серверы, например Gmail или Яндекс:

  • Для Gmail: Host = smtp.gmail.com, Port = 587, SMTPSecure = tls.
  • Для Яндекс: Host = smtp.yandex.ru, Port = 465, SMTPSecure = ssl.

Для Gmail потребуется создать пароль приложения, если включена двухфакторная аутентификация.

Альтернативы: использование плагинов SMTP

Хотя в статье мы рассматриваем настройку без плагинов, для удобства можно использовать плагины:

  • Clearfy Pro — содержит оптимизацию и настройки безопасности, включая почту.
  • WPGPT — плагин с расширенными возможностями, хотя SMTP не основное его назначение.

Плагины упрощают настройку, но добавляют нагрузку и зависимость от стороннего кода.

Резюме и рекомендации

Настройка SMTP без плагинов — надежный способ обеспечить корректную отправку писем с WordPress. Важно правильно указать параметры сервера и проверить работу с помощью тестового письма.

Также не забывайте про безопасность: храните логины и пароли в защищенном месте, а лучше используйте константы или переменные окружения для конфиденциальных данных.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как создать автоматическое резервное копирование базы данных WordPress без плагинов
13.03.2026
Как использовать фильтр pre_get_posts для изменения запросов WordPress
06.02.2026
Как создать автоматический sitemap с поддержкой фильтров в WordPress
05.04.2026
Как использовать WPRemark для автоматического отзыва в комментариях WordPress
01.04.2026
Автоматическое удаление старых заказов WooCommerce по статусу
23.12.2025
×
WordPress
прокачай свой сайт!

-20% на премиум темы и плагины

Сделай апгрейд сайта ⋙