Проблемы с отправкой писем из 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:
- Установите и активируйте плагин WP Mail SMTP.
- Перейдите в раздел настроек плагина и выберите SMTP в качестве метода отправки.
- Введите данные SMTP-сервера, порт, шифрование, логин и пароль.
- Сохраните настройки и отправьте тестовое письмо прямо из плагина.
Если письмо не приходит, проверьте правильность учетных данных, порт и доступ к 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 вы найдете полезные инструменты и поддержку.