Как отключить метод отправки писем PHP mail в WordPress и настроить SMTP

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

Почему стоит отключить PHP mail в WordPress

Метод PHP mail использует локальный почтовый сервер на вашем хостинге для отправки писем. Часто он плохо настраивается, почта может не доходить до получателя или попадать в спам. Кроме того, многие почтовые сервисы проверяют SPF, DKIM и DMARC записи, и письма с PHP mail часто не соответствуют требованиям, что снижает репутацию домена.

Использование SMTP для отправки почты позволяет:

  • Использовать внешние почтовые сервисы (Gmail, Mail.ru, Яндекс, специализированные SMTP-провайдеры)
  • Улучшить доставляемость писем
  • Добавить аутентификацию отправителя
  • Упростить диагностику проблем с почтой

Поэтому отключение PHP mail и настройка SMTP — важный этап для качественной работы сайта с почтой.

Настройка SMTP через популярные плагины

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

1. WP Mail SMTP

Один из самых популярных плагинов для настройки SMTP в WordPress. Позволяет подключать SMTP-серверы Gmail, Outlook, Mail.ru, Яндекс и другие. Поддерживает OAuth 2.0 для Gmail, что повышает безопасность.

Преимущества:

  • Простой мастер настройки
  • Отправка тестового письма
  • Логирование отправленных писем (в PRO версии)

Установка и настройка:

  1. Установите и активируйте плагин с официального репозитория WordPress.
  2. Перейдите в «Настройки» > «WP Mail SMTP».
  3. Выберите SMTP-сервер, например Gmail.
  4. Заполните настройки SMTP: сервер, порт, шифрование, логин и пароль.
  5. Сохраните настройки и отправьте тестовое письмо.

2. Post SMTP Mailer/Email Log

Этот плагин умеет автоматически переключаться между SMTP и API почтовых сервисов. Также ведет подробный лог отправленных писем, что помогает отследить проблемы.

Поддерживает множество сервисов, включая SendGrid, Gmail, Microsoft 365 и другие.

Отключение PHP mail в WordPress программно

Если нужна кастомная интеграция и вы хотите полностью контролировать процесс, можно перехватить вызовы wp_mail() и реализовать отправку через SMTP с помощью PHPMailer.

Пример функции, которая заменяет стандартный метод отправки:

function wpmark_wp_mail_smtp( $args ) {
    // Создаем новый экземпляр PHPMailer
    $mail = new PHPMailer(true);
    try {
        // Настройки SMTP
        $mail->isSMTP();
        $mail->Host = 'smtp.example.com'; // SMTP сервер
        $mail->SMTPAuth = true;
        $mail->Username = 'user@example.com';
        $mail->Password = 'password';
        $mail->SMTPSecure = 'tls';
        $mail->Port = 587;

        // От кого
        $mail->setFrom('user@example.com', 'WPMark');

        // Кому
        foreach ( (array) $args['to'] as $recipient ) {
            $mail->addAddress($recipient);
        }

        // Тема и тело письма
        $mail->Subject = $args['subject'];
        $mail->Body = $args['message'];
        $mail->isHTML(true);

        // Отправляем
        $mail->send();
        return true;
    } catch (Exception $e) {
        error_log('WPMark SMTP error: ' . $mail->ErrorInfo);
        return false;
    }
}

add_filter('wp_mail', 'wpmark_wp_mail_smtp');

Обратите внимание, что в современном WordPress лучше использовать фильтр wp_mail или хук phpmailer_init для настройки SMTP. В данном случае можно использовать phpmailer_init для изменения настроек PHPMailer.

Пример использования хука phpmailer_init для настройки SMTP

Лучший способ отключить PHP mail и настроить SMTP — модифицировать объект PHPMailer через хук phpmailer_init:

function wpmark_phpmailer_smtp( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.example.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'user@example.com';
    $phpmailer->Password = 'password';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From = 'user@example.com';
    $phpmailer->FromName = 'WPMark';
}
add_action( 'phpmailer_init', 'wpmark_phpmailer_smtp' );

Этот код вставьте в файл functions.php вашей темы или в отдельный плагин. После этого все письма WordPress будут уходить через указанный SMTP-сервер.

Проверка и отладка отправки почты

После настройки SMTP важно проверить, что почта действительно отправляется и доставляется:

  • Отправьте тестовое письмо через плагин WP Mail SMTP или вручную вызвав wp_mail().
  • Проверьте папку «Спам» у получателя.
  • Проверьте логи почтового сервера и ошибки PHP.
  • Используйте сервисы проверки SPF, DKIM и DMARC для вашего домена.

Если письма не доходят, попробуйте временно включить логирование ошибок в WordPress и логи почтового сервера.

Использование плагина Clearfy Pro для оптимизации отправки почты

Плагин Clearfy Pro имеет встроенные инструменты оптимизации и настройки почты. В нем вы можете отключить стандартный PHP mail, включить SMTP с удобным интерфейсом и получить дополнительную защиту от спама.

Clearfy Pro подходит для тех, кто хочет комплексно улучшить работу сайта, включая почтовую систему.

Выводы и рекомендации

Если вы столкнулись с проблемами доставки писем на WordPress, первое, что нужно сделать — отказаться от PHP mail и настроить SMTP. Для этого есть множество удобных плагинов, а при необходимости можно реализовать собственное решение через хук phpmailer_init.

Не забывайте тестировать отправку, проверять правильность настроек SPF/DKIM и использовать надежные SMTP-сервисы.

Как добавить пользовательские поля в WordPress REST API
27.11.2025
Как отключить метод отправки писем PHP mail в WordPress и настроить SMTP
16.02.2026
Как создать автоматический заголовок для постов в WordPress с помощью кода и плагинов
05.03.2026
Как создать собственный шорткод WordPress: подробное руководство с примерами
10.11.2025
Как отключить ревизии постов в WordPress для удаления старых версий
02.03.2026