Как отладить проблемы с отправкой писем в WordPress

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

Почему письма из WordPress не доходят: основные причины

Проблемы с отправкой писем могут быть связаны с несколькими факторами:

  • Неправильные настройки почтового сервера (SMTP);
  • Использование функции wp_mail без конфигурации SMTP, из-за чего письма отправляются через PHP mail, который часто блокируется;
  • Проблемы с DNS-записями, такими как SPF, DKIM и DMARC, которые необходимы для подтверждения подлинности отправителя;
  • Плагины безопасности или хостинг, блокирующие отправку почты;
  • Письма попадают в спам из-за отсутствия правильной настройки заголовков и содержимого.

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

Настройка SMTP для правильной отправки почты в WordPress

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

  • WP Mail SMTP — самый популярный и простой в настройке плагин для SMTP;
  • Clearfy Pro — в том числе имеет функции оптимизации отправки почты;
  • Easy WP SMTP — простой плагин для подключения сторонних SMTP-серверов.

Пример базовой настройки SMTP через WP Mail SMTP:

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

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он позволит отправлять письма через SMTP вместо стандартного PHP mail.

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

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

function wpma_test_mail() {
    $to = 'your-email@example.com';
    $subject = 'Тестовая отправка письма';
    $message = 'Если вы получили это письмо, отправка работает.';
    $headers = ['Content-Type: text/html; charset=UTF-8'];

    if(wp_mail($to, $subject, $message, $headers)) {
        echo 'Письмо успешно отправлено.';
    } else {
        echo 'Ошибка отправки письма.';
    }
}

add_action('admin_notices', 'wpma_test_mail');

Добавьте этот код в functions.php, зайдите в админку и посмотрите сообщение. Если письмо не приходит, значит проблема с отправкой.

Кроме того, полезно активировать логирование отправки почты. Для этого в wp-config.php добавьте:

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

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

Настройка SPF, DKIM и DMARC для улучшения доставки писем

Даже при правильно настроенном SMTP письма могут попадать в спам, если домен не имеет корректных DNS-записей:

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

Чтобы настроить эти записи, зайдите в панель управления доменом и добавьте TXT-записи, которые предоставляет ваш почтовый сервис (например, Google Workspace, Yandex 360, Mail.ru).

Без этих записей ваши письма чаще будут попадать в папку «спам» или вовсе не доходить.

Использование альтернативных решений для отправки почты

Если SMTP не подходит или вызывает сложности, можно использовать API популярных почтовых сервисов, например:

  • SendGrid;
  • Mailgun;
  • Amazon SES.

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

function wpma_send_mail_sendgrid($to, $subject, $content) {
    $apiKey = 'SENDGRID_API_KEY';
    $url = 'https://api.sendgrid.com/v3/mail/send';

    $email = [
        'personalizations' => [[
            'to' => [[ 'email' => $to ]]
        ]],
        'from' => ['email' => 'your-email@example.com'],
        'subject' => $subject,
        'content' => [[
            'type' => 'text/plain',
            'value' => $content
        ]]
    ];

    $args = [
        'body'        => json_encode($email),
        'headers'     => [
            'Authorization' => 'Bearer ' . $apiKey,
            'Content-Type'  => 'application/json'
        ],
        'method'      => 'POST',
        'data_format' => 'body',
    ];

    $response = wp_remote_post($url, $args);

    if (is_wp_error($response)) {
        return false;
    }

    return wp_remote_retrieve_response_code($response) == 202;
}

Такой способ более надёжен и часто используется на профессиональных сайтах.

Дополнительные советы по улучшению отправки писем в WordPress

  • Регулярно проверяйте логи почты и ошибки сервера;
  • Используйте отдельный почтовый ящик для отправки системных писем;
  • Настройте обратный адрес (Return-Path) в SMTP, чтобы уменьшить вероятность попадания в спам;
  • Очищайте очереди писем и не отправляйте слишком много писем подряд;
  • Используйте плагины, такие как WPRemark, для мониторинга и логирования почты.
Как установить автоматический редирект после изменения слага в WordPress
20.12.2025
Автоматическое удаление старых медиафайлов в WordPress
27.02.2026
Как добавить настройку очистки кеша в админке WordPress
07.01.2026
WooCommerce: решение проблемы с автоматическим удалением неподтверждённых заказов
30.05.2026
Как разрешить пользователям загружать файлы в WordPress по расширениям
14.02.2026