wpmail.ru wordpress WP Mail

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

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

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

Часто бывает, что вы нажимаете «Отправить», а пользователь не получает письмо. Основные причины:

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

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

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

Использование плагина WP Mail Logging для отслеживания писем

Плагин WP Mail Logging позволяет сохранять логи всех отправленных писем в базе данных. Это помогает понять, уходит ли письмо из WordPress и какие ошибки возникают.

Установите и активируйте плагин, затем перейдите в Инструменты > Логи почты. Если письма отображаются как отправленные, но не доходят, проблема на стороне почтового сервера или получателя.

Проверка отправки писем через SMTP

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

Для настройки SMTP удобно использовать плагин WP Mail SMTP. Он позволяет указать параметры почтового сервера, например, Gmail, Mailgun, SMTP вашего хостинга.

Пример настройки SMTP через код в functions.php темы или плагина:

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

Этот код заменит стандартную отправку на SMTP. После настройки повторите отправку тестового письма.

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

Как поймать ошибки отправки в коде

Для дополнительной отладки можно использовать фильтр wp_mail_failed, который срабатывает при ошибках отправки:

add_action('wp_mail_failed', 'wpmail_wp_mail_failed_action', 10, 1);
function wpmail_wp_mail_failed_action($wp_error) {
    error_log('Ошибка отправки письма: ' . print_r($wp_error, true));
}

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

Проверка и исправление SPF, DKIM и DMARC записей

Если письма уходят, но попадают в спам, проверьте почтовые DNS-записи SPF, DKIM и DMARC у вашего домена. Они подтверждают легитимность отправителя.

Для проверки используйте онлайн-сервисы, например, MXToolbox SPF Check или DKIM Inspector. Если записи отсутствуют, создайте их у регистратора домена или в панели хостинга.

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

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

  • Mailgun — мощный сервис с API и SMTP. Для WordPress есть плагин Mailgun for WordPress.
  • SendGrid — популярный сервис с бесплатным тарифом и плагином.
  • Postmark — ориентирован на транзакционные письма с высокой доставляемостью.

Настройка происходит через API-ключи и SMTP. Эти сервисы позволяют отслеживать статистику и ошибки.

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

Тестовая функция отправки письма с проверкой результата

function wpmail_send_test_email($to) {
    $subject = 'Тестовое письмо с сайта';
    $message = 'Если вы получили это письмо, значит отправка работает.';
    $headers = array('Content-Type: text/html; charset=UTF-8');
    $mail_sent = wp_mail($to, $subject, $message, $headers);
    if (!$mail_sent) {
        error_log('Ошибка: письмо не отправлено на ' . $to);
        return false;
    }
    return true;
}

Вызовите wpmail_send_test_email('your-email@example.com'); для проверки.

Автоматическая смена отправителя письма для повышения доверия

Иногда хостинг запрещает отправку с email, отличного от домена. Чтобы избежать проблем, можно программно задать From:

add_filter('wp_mail_from', 'wpmail_custom_mail_from');
function wpmail_custom_mail_from($original_email_address) {
    return 'no-reply@' . $_SERVER['SERVER_NAME'];
}

add_filter('wp_mail_from_name', 'wpmail_custom_mail_from_name');
function wpmail_custom_mail_from_name($original_email_from) {
    return get_bloginfo('name');
}

Это повысит вероятность прохождения почты.

Рекомендации по плагинам для улучшения работы с почтой в WordPress

Кроме упомянутого WP Mail SMTP и Mailgun, обратите внимание на:

  • Clearfy Pro — оптимизирует WordPress, включая параметры почты и безопасность.
  • Expert Review — для сбора отзывов с уведомлениями по почте, с гибкой настройкой отправки.
  • WPRemark — расширенный контроль комментариев и уведомлений.

Использование таких инструментов помогает снизить вероятность проблем с почтой.

Итог: последовательный подход к решению проблем с почтой

Для эффективной работы почты в WordPress важно:

  1. Проверить, уходит ли письмо из WordPress с помощью логирования.
  2. Настроить SMTP или интеграцию с внешними почтовыми сервисами.
  3. Контролировать DNS-записи SPF, DKIM, DMARC.
  4. Отлавливать ошибки отправки через хуки и логи.
  5. Использовать проверенные плагины для управления почтой.

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

×
WPRemark
Внимание Внимание Внимание Внимание
-15%

на WPRemark плагин WordPress

Прокачай свой сайт! ⋙