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

Сценарий знакомый: письма из формы не доходят, WooCommerce не отправляет уведомления, а хостинг отвечает, что mail() у него «работает как есть». В WordPress почти все системные письма идут через wp_mail(), а уже она по умолчанию использует PHP mail. На нормальном хостинге это часто нестабильно: письма попадают в спам, режутся антиспамом или вообще не уходят.

Ниже — практический способ перевести отправку на SMTP, не отключая сами уведомления. Если задача именно в том, чтобы убрать системные письма совсем, это отдельная история: сначала нужно понять, какие письма отключать, а какие оставить, иначе легко сломать регистрацию, сброс пароля или подтверждения заказов.

Когда проблема именно в отправке писем

Сначала проверьте, что вы лечите не форму, а канал доставки. Часто ошибка выглядит как «письмо не приходит», но причина находится в другом месте:

  • хостинг блокирует исходящую почту с сайта;
  • домен не имеет SPF/DKIM/DMARC или они настроены криво;
  • плагин формы отправляет письмо, но адрес получателя неверный;
  • WooCommerce шлёт уведомления, но они попадают в спам;
  • на сайте несколько плагинов меняют From: и ломают заголовки.

Быстрая диагностика

Проверка должна быть простой и воспроизводимой. Не гадайте по логам почтового ящика — отправьте тест из WordPress и посмотрите, что реально происходит.

  1. Откройте настройки почты в плагине SMTP или в своей реализации.
  2. Отправьте тестовое письмо на внешний адрес, не связанный с доменом сайта.
  3. Проверьте заголовки письма: от кого оно отправлено, через какой сервер прошло, есть ли отметка об аутентификации.
  4. Если письмо не пришло, смотрите журнал отправки, а не только папку «Спам».

Если вы используете WooCommerce, отдельно проверьте уведомления о новом заказе и сбросе пароля. Это разные сценарии, и один может работать, а другой — нет.

Что лучше: плагин, код или настройка хостинга

Для большинства проектов самый безопасный путь — SMTP через проверенный плагин. Кодом имеет смысл настраивать только нестандартные случаи: свой почтовый сервер, отдельный API-провайдер или жёсткие требования к заголовкам.

ПодходКогда подходитПлюсыМинусы
Плагин SMTPОбычный сайт, WooCommerce, формыБыстро, есть тесты и логированиеДополнительный плагин, зависимость от настроек
Код через phpmailer_initНужна точечная интеграцияГибкость, без лишнего интерфейсаНужно поддерживать код и следить за обновлениями
Почта хостинга без SMTPТолько если хостинг надёжно настроенМинимум действийЧасто проблемы с доставляемостью и спамом

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

Пошаговая настройка SMTP в WordPress

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

1. Выберите почтовый сервис

Подойдёт любой сервис, который даёт SMTP-доступ: корпоративная почта, почта домена у хостера или внешний провайдер. Для сайта с заказами лучше использовать отдельный ящик, а не личную почту администратора.

2. Укажите параметры подключения

Типичный набор выглядит так:

SMTP host: smtp.example.com
SMTP port: 587
Encryption: TLS
Authentication: yes
Username: noreply@example.com
Password: ********

Если провайдер требует SSL, используйте порт 465. Не смешивайте порт и шифрование наугад: неверная комбинация — частая причина таймаутов и ошибок авторизации.

3. Задайте корректный адрес отправителя

Адрес From должен совпадать с доменом, который разрешён для отправки. Если сайт шлёт письма от wordpress@site.ru, а SMTP-аккаунт — на другом домене, часть сервисов будет помечать письмо как подозрительное.

4. Включите журнал отправки

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

Настройка через код: когда нужен полный контроль

Если вы не хотите ставить отдельный плагин, можно переопределить параметры PHPMailer. Это не отключает wp_mail(), а меняет способ доставки.

<?php
add_action('phpmailer_init', function ($phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.example.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->Username = 'noreply@example.com';
    $phpmailer->Password = 'your-password';
    $phpmailer->From = 'noreply@example.com';
    $phpmailer->FromName = 'Site Name';
});

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

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

<?php
add_filter('wp_new_user_notification_email', '__return_false');

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

Как проверить, что всё работает

После настройки не ограничивайтесь одним тестом. Проверка должна покрывать минимум три сценария:

  • тестовое письмо из SMTP-плагина или вашей настройки;
  • письмо из формы обратной связи;
  • письмо WooCommerce о новом заказе или смене статуса заказа.

Дальше смотрите не только факт доставки, но и заголовки. В идеале письмо должно проходить аутентификацию SPF/DKIM, а домен отправителя — совпадать с доменом почты.

Если письма доходят, но попадают в спам, проблема уже не в WordPress. Тогда проверяйте DNS-записи домена, репутацию IP и содержимое письма: слишком много ссылок, подозрительные темы, отсутствие нормального From и Reply-To часто ухудшают доставляемость.

Частые ошибки и как их исправить

Неверный порт или шифрование

Классическая ситуация: указан порт 587, но включён SSL, либо порт 465, но выбран TLS. Исправление простое — сверить параметры у почтового провайдера и не подставлять значения «по памяти».

Отправка с чужого адреса

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

Конфликт нескольких плагинов почты

Если одновременно активны два SMTP-плагина, они могут перехватывать wp_mail() друг у друга. Оставьте только один способ отправки и проверьте, нет ли в теме или mu-plugin собственного кода для PHPMailer.

Хостинг режет исходящие соединения

Некоторые тарифы блокируют исходящий SMTP на уровне сети. В этом случае настройка в WordPress не поможет: нужен другой порт, другой провайдер или внешний почтовый сервис с API.

Письма уходят, но не доходят

Это уже вопрос доставляемости. Проверьте SPF, DKIM и DMARC, а также правильность домена в From. Без этого даже корректно настроенный WordPress не гарантирует попадание во входящие.

Чек-лист перед запуском в продакшен

  • SMTP-аккаунт создан и активен.
  • Порт и шифрование совпадают с требованиями провайдера.
  • Адрес отправителя принадлежит тому же домену или разрешён политикой сервиса.
  • Тестовое письмо приходит на внешний ящик.
  • Проверены уведомления форм, WooCommerce и сброс пароля.
  • Включён лог отправки хотя бы на период наблюдения.
  • Нет двух плагинов, которые одновременно меняют почтовую отправку.

Безопасность и производительность

Не храните SMTP-пароль в открытом виде в публичном репозитории. Если проект командный, лучше вынести секреты в переменные окружения или хотя бы ограничить доступ к файлам конфигурации. Для сайта с высокой нагрузкой SMTP через внешний сервис обычно надёжнее, чем попытки слать письма напрямую с веб-сервера.

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

Когда нужен не только SMTP, но и чистка лишних функций сайта, иногда удобно совместить настройку почты с общей оптимизацией через инструменты вроде Clearfy Pro: убрать лишние системные действия, сократить шум в админке и не держать на сайте то, что мешает отладке. Но саму отправку писем всё равно лучше проверять отдельно, а не «на глаз».

Как создать мультиязычный сайт в WordPress без плагинов
10.08.2026
Как удалить лишние ревизии и автосохранения в WordPress без риска для контента
07.10.2026
Как исключить страницы из внутреннего поиска WordPress
24.09.2026
Как закрыть от индексации технические страницы WordPress: robots.txt, noindex и canonical без лишних ошибок
17.08.2026
Как замедлить admin-ajax.php и Heartbeat API в WordPress без поломки редактора
01.10.2026