wpconsult.ru wordpress WP Consult

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

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

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

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

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

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

Шаг 1. Проверка базовой отправки писем с помощью кода

Добавьте в файл functions.php вашей темы следующий код, чтобы протестировать отправку письма:

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

    $sent = wp_mail($to, $subject, $message, $headers);
    if($sent) {
        error_log('WPConsult: письмо успешно отправлено');
    } else {
        error_log('WPConsult: ошибка при отправке письма');
    }
}
add_action('wp_footer', 'wpconsult_test_wp_mail');

После обновления любой страницы сайта проверьте логи сервера или error_log. Если письмо не отправляется, значит проблема на уровне сервера или PHP.

Шаг 2. Использование SMTP для надежной отправки почты

Чтобы обойти ограничения сервера, рекомендуется подключить SMTP-сервер для отправки писем. Это может быть Gmail, Яндекс.Почта, Mail.ru или корпоративный SMTP. Для этого есть удобные плагины:

  • WP Mail SMTP — самый популярный плагин для настройки SMTP в WordPress;
  • Post SMTP Mailer/Email Log — расширенный плагин с поддержкой логирования;
  • Easy WP SMTP — простой и легкий в настройке.

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

  1. Установите и активируйте плагин WP Mail SMTP.
  2. Перейдите в раздел настроек плагина и выберите SMTP в качестве метода отправки.
  3. Введите данные SMTP-сервера, порт, шифрование, логин и пароль.
  4. Сохраните настройки и отправьте тестовое письмо прямо из плагина.

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

Шаг 3. Настройка SPF, DKIM и DMARC для повышения доставки писем

Даже при правильной настройке SMTP письма могут попадать в спам, если у домена отсутствуют записи SPF, DKIM и DMARC. Эти DNS-записи подтверждают право вашего сервера отправлять почту от имени домена.

Чтобы настроить их, зайдите в панель управления доменом и добавьте TXT-записи:

  • SPF: разрешает серверам отправлять почту от вашего домена, например:
    v=spf1 include:_spf.google.com ~all
  • DKIM: цифровая подпись сообщений, обычно генерируется вашим почтовым провайдером;
  • DMARC: политика обработки сомнительных писем, например:
    v=DMARC1; p=none; rua=mailto:admin@yourdomain.com

Без этих записей письма могут попадать в спам или вовсе отбрасываться почтовыми сервисами.

Шаг 4. Логирование и отладка отправки писем

Для диагностики проблем с отправкой полезно включить логирование писем. Плагин Post SMTP Mailer/Email Log позволяет вести журнал всех отправленных писем с подробной информацией.

Вы сможете увидеть ошибки SMTP, ответ сервера и статус доставки. Это значительно упрощает поиск причины сбоя.

Шаг 5. Кастомное решение для отправки почты с использованием PHPMailer

Если плагинов по каким-то причинам недостаточно, можно использовать класс PHPMailer, встроенный в WordPress, напрямую и задавать параметры SMTP в коде. Пример функции для отправки письма через SMTP:

function wpconsult_send_smtp_mail($to, $subject, $message) {
    $mail = new PHPMailer(true);
    try {
        $mail->isSMTP();
        $mail->Host = 'smtp.yourprovider.ru';
        $mail->SMTPAuth = true;
        $mail->Username = 'your-login';
        $mail->Password = 'your-password';
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->Port = 587;

        $mail->setFrom('noreply@yourdomain.ru', 'WPConsult');
        $mail->addAddress($to);
        $mail->isHTML(true);
        $mail->Subject = $subject;
        $mail->Body = $message;

        $mail->send();
        return true;
    } catch (Exception $e) {
        error_log('WPConsult SMTP error: ' . $mail->ErrorInfo);
        return false;
    }
}

Вызывайте эту функцию вместо wp_mail(), если нужны тонкие настройки и контроль.

Дополнительные советы для стабильной работы почты в WordPress

Используйте надежный SMTP-провайдер

Выбирайте проверенных почтовых провайдеров с хорошей репутацией — Google Workspace, Яндекс.Почта для бизнеса, Mailgun, SendGrid. Они обеспечивают высокую доставляемость и подробную статистику.

Регулярно проверяйте DNS-записи

Убедитесь, что SPF, DKIM и DMARC записи актуальны и корректны, особенно после смены хостинга или почтового провайдера.

Отключайте конфликтующие плагины

Некоторые плагины безопасности или кеширования могут блокировать или изменять работу почтовой функции. При проблемах временно отключайте плагины и проверяйте отправку.

В итоге, настроив SMTP и правильно оформив DNS-записи, вы обеспечите стабильную доставку писем с сайта на WordPress. Если нужна помощь с плагинами или дополнительными настройками — на сайте WPShop вы найдете полезные инструменты и поддержку.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее