WordPress письма попадают в спам

Автор:vkuzyomko

WordPress письма попадают в спам

Краткий ответ: письма WordPress попадают в спам чаще всего из-за отправки через PHP mail() без нормальной авторизации домена, отсутствия SPF/DKIM/DMARC, неправильного поля From, использования email посетителя как отправителя, плохой репутации IP хостинга, неверных заголовков, слабого SMTP, подозрительного текста письма или конфликта плагинов формы.

Главная ошибка — думать, что если WordPress вызвал wp_mail(), значит письмо точно доставлено. Это не так. WordPress может успешно передать письмо серверу, но Gmail, Outlook, корпоративная почта или антиспам всё равно отправят его в спам или отклонят.

Причина

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

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

  • сайт отправляет письма через PHP mail() без SMTP;
  • From email не совпадает с доменом сайта;
  • в From указан email пользователя, например Gmail посетителя формы;
  • у домена не настроены SPF, DKIM и DMARC;
  • письмо отправляется с shared-хостинга с плохой репутацией IP;
  • Return-Path не совпадает с доменом отправителя;
  • в письме нет нормальной темы или тело слишком короткое;
  • в письме много ссылок, подозрительных слов или HTML-мусора;
  • Contact Form 7, WPForms, Elementor Form или другой плагин формирует плохие headers;
  • SMTP-плагин настроен, но отправляет не от того домена;
  • письма WooCommerce используют старые шаблоны или некорректный From;
  • почтовый ящик получателя сам фильтрует такие письма в spam/junk.

Если письма не просто попадают в спам, а вообще не отправляются, сначала нужно проверить базовую отправку: не отправляются письма WordPress. Если проблема только с формой, отдельно проверьте настройки из статьи Contact Form 7 не отправляет письма.

Почему почтовики считают WordPress-письма подозрительными

Проблема Как это выглядит для почтовика Что делать
Нет SMTP Письмо отправлено сервером сайта без нормальной авторизации Настроить SMTP или транзакционный email-сервис
Нет SPF Не понятно, имеет ли сервер право отправлять от имени домена Добавить SPF-запись в DNS
Нет DKIM Письмо не подписано доменным ключом Включить DKIM у почтового сервиса
Нет DMARC Нет политики проверки SPF/DKIM Добавить DMARC-запись
Неверный From Сайт отправляет письмо от имени чужого домена Использовать email на домене сайта
Плохой Return-Path Технический отправитель не совпадает с доменом Настроить SMTP и envelope sender
Плохая репутация IP Сервер уже замечен в массовой рассылке Использовать нормальный SMTP-сервис
Подозрительный контент Письмо похоже на спам по тексту или HTML Упростить текст, тему и шаблон

Диагностика

Диагностику нужно делать по цепочке: WordPress создал письмо, SMTP его отправил, домен прошёл проверку, получатель принял письмо, антиспам не отправил его в junk.

Быстрая проверка

  • отправьте тестовое письмо с сайта;
  • проверьте папки Spam, Junk, Promotions, Quarantine;
  • посмотрите From email и From name;
  • проверьте Reply-To;
  • проверьте, через что письмо отправлено: PHP mail() или SMTP;
  • отправьте тест на Gmail, Outlook и доменную почту;
  • проверьте SPF, DKIM, DMARC в DNS;
  • включите email logs в SMTP-плагине;
  • проверьте заголовки письма;
  • проверьте debug.log;
  • проверьте, нет ли ошибок wp_mail_failed;
  • сравните письмо из формы и обычное письмо из почтового ящика домена.

Что смотреть в заголовках письма

  • From — кто указан отправителем;
  • Reply-To — куда менеджер отвечает;
  • Return-Path — технический адрес возврата ошибок;
  • SPF — passed или failed;
  • DKIM — passed или failed;
  • DMARC — passed или failed;
  • Received — через какие серверы прошло письмо;
  • Authentication-Results — итоговая проверка почтовика.

Как понять, где проблема

Симптом Вероятная причина Что проверить
Письмо приходит только в спам Gmail Недоверие к домену или IP SPF, DKIM, DMARC, SMTP, контент письма
Письмо приходит в спам Outlook Репутация IP, SPF/DKIM, фильтры Microsoft SMTP-сервис, заголовки, доменную авторизацию
Письмо с формы в спаме, обычное письмо нет Форма создаёт плохие headers From, Reply-To, mail-tags, шаблон письма
Письма WooCommerce в спаме From, SMTP, HTML-шаблон, доменная авторизация WooCommerce emails, SMTP, DNS
Письмо отправлено через сервер хостинга PHP mail() без доверия Настроить SMTP
SPF passed, DKIM failed Нет подписи или неверный DKIM Настройки почтового сервиса и DNS
DKIM passed, DMARC failed Нет выравнивания доменов From domain, Return-Path, DKIM domain
Письмо с коротким текстом в спаме Похоже на пустое или техническое письмо Subject, message body, HTML

Нужно быстро решить проблему на сайте?

Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.

Оставить заявку

Решение

Исправлять попадание писем WordPress в спам нужно не одним плагином, а настройкой всей почтовой цепочки: From, SMTP, DNS, заголовки, содержание письма и логи.

1. Использовать доменный From email

В поле From должен быть email на домене сайта.

Правильно:

  • noreply@example.com
  • info@example.com
  • site@example.com

Неправильно:

  • email пользователя формы в From;
  • личный Gmail администратора без SMTP;
  • адрес чужого домена;
  • пустой From;
  • From, который не существует.

Email посетителя формы лучше ставить в Reply-To. Тогда менеджер сможет ответить клиенту, но письмо будет отправлено от домена сайта.

2. Настроить SMTP

SMTP заменяет отправку через PHP mail() на авторизованную отправку через почтовый сервер. Для бизнес-сайта это почти всегда лучше, чем доверять почте хостинга.

  • создайте почтовый ящик на домене сайта;
  • установите SMTP-плагин;
  • укажите SMTP host, port, encryption;
  • используйте логин и пароль или API-ключ;
  • отправьте тестовое письмо;
  • проверьте email logs;
  • отправьте тест на Gmail и Outlook;
  • проверьте заголовки полученного письма.

3. Настроить SPF, DKIM и DMARC

SMTP без DNS-записей может не решить проблему полностью. Почтовик должен видеть, что домен разрешил этому серверу отправлять письма.

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

DNS-записи нужно брать у вашего почтового сервиса или SMTP-провайдера. Нельзя копировать чужие SPF/DKIM-записи из интернета — они не будут работать для вашего домена.

4. Исправить настройки формы

Для Contact Form 7, WPForms, Elementor Form, Fluent Forms и других форм логика одинаковая: сайт отправляет письмо от себя, а email посетителя указывается для ответа.

Пример правильной схемы:

  • To: manager@example.com
  • From: Site Name <noreply@example.com>
  • Reply-To: email посетителя из формы
  • Subject: Новая заявка с сайта

5. Проверить содержание письма

Даже при правильном SMTP письмо может попасть в спам из-за содержания.

  • не оставляйте тело письма пустым;
  • не делайте письмо слишком коротким;
  • не используйте много капса и восклицательных знаков;
  • не добавляйте много ссылок без необходимости;
  • не вставляйте тяжёлый HTML из конструктора страниц;
  • не прикладывайте подозрительные файлы;
  • не используйте тему письма “test” или “hello” для рабочих заявок;
  • добавьте понятное название сайта и источник заявки.

6. Проверить WooCommerce-письма

WooCommerce отправляет письма о заказах, статусах, аккаунтах, сбросе пароля и уведомления администратору. Если они попадают в спам, проверьте From address в WooCommerce, SMTP, DNS и HTML-шаблоны писем.

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

Код

Важно: код ниже предназначен для диагностики и базовой настройки отправителя. Перед правками сделайте бэкап. Если у вас уже есть SMTP-плагин, который задаёт From email, не дублируйте эти настройки через functions.php без проверки.

1. Включить debug.log

Куда вставлять: в файл wp-config.php перед строкой /* That’s all, stop editing! */.

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

2. Логировать ошибки wp_mail_failed

Куда вставлять: во временный служебный плагин или в functions.php дочерней темы. Лучше использовать отдельный мини-плагин.

<?php
if (!defined('ABSPATH')) {
    exit;
}

add_action('wp_mail_failed', 'sc_log_wp_mail_failed');

function sc_log_wp_mail_failed($wp_error) {
    if (!is_wp_error($wp_error)) {
        return;
    }

    error_log('================ SC WP MAIL FAILED ================');
    error_log('Message: ' . $wp_error->get_error_message());

    $error_data = $wp_error->get_error_data();

    if (!empty($error_data) && is_array($error_data)) {
        if (!empty($error_data['to'])) {
            error_log('To: ' . print_r($error_data['to'], true));
        }

        if (!empty($error_data['subject'])) {
            error_log('Subject: ' . $error_data['subject']);
        }

        if (!empty($error_data['headers'])) {
            error_log('Headers: ' . print_r($error_data['headers'], true));
        }
    }

    error_log('====================================================');
}

3. Проверить wp_mail() тестовым письмом

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

Куда вставлять: временно в functions.php дочерней темы или в отдельный служебный плагин.

<?php
add_action('admin_init', 'sc_test_wp_mail_from_admin');

function sc_test_wp_mail_from_admin() {
    if (!current_user_can('manage_options')) {
        return;
    }

    if (empty($_GET['sc_test_wp_mail'])) {
        return;
    }

    $admin_email = get_option('admin_email');

    $sent = wp_mail(
        $admin_email,
        'Test wp_mail from WordPress',
        'Это тестовое письмо WordPress. Проверьте, попало ли оно во входящие или в спам.'
    );

    if ($sent) {
        wp_die('Тестовое письмо отправлено на: ' . esc_html($admin_email));
    }

    wp_die('wp_mail вернул false. Проверьте SMTP, debug.log и wp_mail_failed.');
}

После вставки откройте в админке:

/wp-admin/?sc_test_wp_mail=1

4. Задать From email и From name через PHP

Важно: используйте этот код только если отправитель не задаётся SMTP-плагином. Если SMTP-плагин уже управляет From, настройте отправителя в нём.

<?php
add_filter('wp_mail_from', 'sc_set_wp_mail_from');

function sc_set_wp_mail_from($email) {
    return 'noreply@example.com';
}

add_filter('wp_mail_from_name', 'sc_set_wp_mail_from_name');

function sc_set_wp_mail_from_name($name) {
    return 'Example Site';
}

Замените noreply@example.com и Example Site на реальные данные вашего сайта.

5. Правильные headers для Contact Form 7

Куда вставлять: Contact Form 7 → ваша форма → вкладка Mail.

To: manager@example.com
From: Example Site <noreply@example.com>
Subject: Новая заявка с сайта
Additional headers: Reply-To: [your-email]

В поле From должен быть доменный email сайта. Email пользователя формы должен быть в Reply-To.

6. Установить HTML content type только точечно

Важно: не меняйте глобально тип всех писем на HTML без понимания последствий. Некоторые плагины ожидают text/plain. Лучше настраивать HTML в конкретном плагине формы или WooCommerce.

<?php
add_filter('wp_mail_content_type', 'sc_set_html_mail_content_type');

function sc_set_html_mail_content_type($content_type) {
    return 'text/html';
}

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

Результат

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

Хороший результат

  • письма отправляются через SMTP;
  • From email находится на домене сайта;
  • Reply-To содержит email пользователя формы;
  • SPF проходит проверку;
  • DKIM проходит проверку;
  • DMARC не падает;
  • письма не попадают в spam/junk;
  • email logs показывают успешную отправку;
  • debug.log не содержит ошибок wp_mail;
  • формы, WooCommerce и системные письма WordPress работают одинаково предсказуемо.

Дополнительные способы

Вариант 1: SMTP-плагин

Подходит для большинства WordPress-сайтов. Это самый быстрый способ уйти от ненадёжного PHP mail() хостинга.

Плюсы: проще настроить, есть тестовая отправка, часто есть email logs.

Минусы: нужно правильно указать сервер, порт, шифрование, логин и пароль.

Вариант 2: Транзакционный email-сервис

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

Плюсы: лучше логи, доставляемость, статистика и контроль ошибок.

Минусы: нужен внешний сервис, тариф и настройка DNS.

Вариант 3: Доменная почта

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

Плюсы: понятная схема, письма идут от домена сайта.

Минусы: не все почтовые хостинги хорошо подходят для большого количества транзакционных писем.

Вариант 4: Сохранение заявок в базе или CRM

Подходит, если потеря письма критична. Email лучше считать уведомлением, а не единственным хранилищем заявки.

Плюсы: заявка не пропадает, даже если письмо попало в спам.

Минусы: нужно защищать персональные данные и следить за сроком хранения.

Безопасность

Почтовые настройки часто содержат SMTP-пароли, API-ключи и персональные данные клиентов. Поэтому нельзя хранить их в открытом JavaScript, публичных файлах темы или выводить в debug-ответы.

Что нельзя делать

  • нельзя вставлять SMTP-пароль во фронтенд;
  • нельзя выводить API-ключ транзакционного сервиса в HTML;
  • нельзя оставлять debug.log публично доступным;
  • нельзя логировать полные письма с персональными данными без необходимости;
  • нельзя отправлять письма от чужого домена;
  • нельзя использовать email пользователя формы в From;
  • нельзя отключать антиспам без замены;
  • нельзя рассылать массовые письма через тот же канал, что и заявки, без контроля репутации.

Что нужно использовать

  • доменный email отправителя;
  • SMTP или транзакционный email-сервис;
  • SPF, DKIM, DMARC;
  • email logs без лишних персональных данных;
  • Reply-To вместо подмены From;
  • HTTPS на сайте;
  • ограниченный доступ к настройкам SMTP;
  • резервное сохранение важных заявок.

Производительность

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

Что может тормозить отправку

  • медленный SMTP-сервер;
  • таймаут внешнего email API;
  • слишком тяжёлые HTML-шаблоны;
  • большие вложения;
  • генерация PDF перед отправкой;
  • отправка нескольких писем подряд;
  • синхронная отправка в CRM и email одновременно;
  • медленный хостинг или PHP memory limit.

Что помогает

  • использовать надёжный SMTP или транзакционный сервис;
  • не прикладывать тяжёлые файлы без необходимости;
  • не генерировать PDF прямо во время отправки формы;
  • для важных процессов использовать очередь;
  • включить email logs на время диагностики;
  • проверять timeout внешних API;
  • разделять уведомление менеджеру и сохранение заявки.

Частые ошибки

Настроить SMTP, но не настроить DNS

SMTP помогает отправлять письмо, но без SPF, DKIM и DMARC почтовый сервис всё равно может не доверять отправителю.

Использовать Gmail посетителя в From

Это выглядит как подделка отправителя. Сайт не имеет права отправлять письма от имени gmail.com, outlook.com или другого чужого домена.

Не проверять заголовки письма

Без заголовков невозможно понять, прошли ли SPF, DKIM и DMARC. Внешне письмо может выглядеть нормально, но технически проваливать проверку.

Проверять только один почтовый ящик

Gmail, Outlook и корпоративная почта могут фильтровать по-разному. Нужно тестировать несколько получателей.

Считать зелёный статус формы гарантией доставки

Форма может показать успех, потому что WordPress обработал запрос. Это не значит, что письмо попало во входящие.

Оставлять пустую тему или короткий текст

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

Использовать shared-хостинг как почтовый сервер

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

Не сохранять заявки

Если заявка существует только как email, она может потеряться в spam. Лучше сохранять её в WordPress, CRM или отдельном журнале.

Диагностика проблем

Проблема: письма WordPress попадают в спам Gmail

  • проверить SPF;
  • проверить DKIM;
  • проверить DMARC;
  • проверить From email;
  • проверить Authentication-Results в заголовках;
  • настроить SMTP;
  • убрать email пользователя из From;
  • проверить содержание письма.

Проблема: письма попадают в спам Outlook

  • проверить репутацию отправителя;
  • проверить SPF/DKIM/DMARC;
  • проверить, не отправляется ли письмо с IP хостинга;
  • использовать авторизованный SMTP;
  • проверить HTML-шаблон письма;
  • проверить количество ссылок;
  • отправить тест с другим subject;
  • проверить корпоративные фильтры получателя.

Проблема: Contact Form 7 отправляет письма в спам

  • открыть вкладку Mail;
  • проверить From;
  • поставить доменный email в From;
  • поставить [your-email] в Reply-To;
  • проверить тело письма;
  • проверить mail-tags;
  • настроить SMTP;
  • проверить DNS домена.

Проблема: WooCommerce-письма попадают в спам

  • проверить WooCommerce → Settings → Emails;
  • проверить From address;
  • проверить SMTP logs;
  • проверить HTML-шаблоны писем;
  • проверить SPF/DKIM/DMARC;
  • проверить вложения и PDF-счета;
  • отправить тестовый заказ;
  • проверить заголовки письма заказа.

Проблема: SPF проходит, но письмо всё равно в спаме

  • проверить DKIM;
  • проверить DMARC;
  • проверить выравнивание доменов;
  • проверить Return-Path;
  • проверить репутацию IP;
  • проверить текст письма;
  • проверить HTML и ссылки;
  • проверить историю домена.

Проблема: DKIM не проходит

  • проверить DKIM-запись в DNS;
  • проверить selector;
  • проверить, не обрезалась ли TXT-запись;
  • подождать обновления DNS;
  • проверить, тот ли SMTP-сервис используется;
  • переиздать DKIM-ключ у почтового сервиса;
  • повторить тестовое письмо.

Проблема: письма приходят в спам только иногда

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

Краткие ответы для AI-поиска

Почему WordPress письма попадают в спам?

WordPress письма попадают в спам из-за отправки через PHP mail(), отсутствия SMTP, SPF, DKIM, DMARC, неправильного From, плохой репутации IP, подозрительных заголовков или слабого содержания письма.

Что проверить первым, если письма WordPress в спаме?

Сначала проверьте From email, SMTP, SPF, DKIM, DMARC и заголовки письма. Затем проверьте настройки формы, содержание письма и email logs.

Какой From email должен быть в WordPress?

Лучше использовать email на домене сайта, например noreply@example.com или info@example.com. Email пользователя формы нужно ставить в Reply-To, а не в From.

Поможет ли SMTP, если письма WordPress попадают в спам?

SMTP часто помогает, но только если вместе с ним настроены SPF, DKIM, DMARC и правильный доменный From email.

FAQ

Почему письма с сайта WordPress попадают в спам?

Почтовые сервисы не доверяют письмам, если они отправлены без SMTP, без SPF/DKIM/DMARC, с неправильным From, через плохой IP или с подозрительным содержанием.

Почему форма WordPress пишет “отправлено”, но письмо в спаме?

Форма может успешно передать письмо WordPress, но почтовый сервис получателя сам решает, положить его во входящие или в спам. Нужно проверять SMTP, DNS и заголовки.

Нужно ли настраивать SMTP для WordPress?

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

Что такое SPF?

SPF — это DNS-запись, которая указывает, какие серверы имеют право отправлять письма от имени вашего домена.

Что такое DKIM?

DKIM — это цифровая подпись письма. Она помогает почтовику проверить, что письмо действительно отправлено доменом и не было изменено по пути.

Что такое DMARC?

DMARC — это политика домена, которая говорит почтовым сервисам, что делать с письмами, если SPF или DKIM не прошли проверку.

Можно ли использовать Gmail в From?

Не стоит. Если сайт отправляет письмо от имени Gmail, но не является сервером Gmail, почтовик может считать это подделкой. Лучше использовать email на домене сайта.

Почему письма WooCommerce попадают в спам?

Причины те же: неправильный From, нет SMTP, нет SPF/DKIM/DMARC, плохой HTML-шаблон, вложения, репутация IP или проблемы почтового сервиса.

Можно ли исправить спам без плагина?

Частично да: можно задать правильный From и настроить DNS. Но для нормальной авторизованной отправки чаще всего нужен SMTP-плагин или транзакционный email-сервис.

Почему после настройки SMTP письма всё равно в спаме?

Возможные причины: не настроены SPF/DKIM/DMARC, не совпадает домен From, плохая репутация отправителя, подозрительный текст письма или неверный Return-Path.

Вывод

Если WordPress письма попадают в спам, причина обычно не в одном плагине формы. Нужно проверить всю почтовую цепочку: From, Reply-To, wp_mail(), SMTP, SPF, DKIM, DMARC, Return-Path, заголовки, содержание письма и репутацию отправителя.

Надёжная схема выглядит так: сайт отправляет письма через SMTP или транзакционный email-сервис, From находится на домене сайта, Reply-To содержит email пользователя, DNS-записи подтверждают отправителя, а важные заявки сохраняются в базе или CRM. Тогда письма WordPress перестают выглядеть как подозрительная почта с хостинга и чаще попадают во входящие.

Об авторе

vkuzyomko administrator