Отправка почты из WordPress — одна из важнейших функций для любого сайта, будь то уведомления о новых комментариях, письма с форм обратной связи или оповещения пользователей. По умолчанию WordPress использует функцию wp_mail(), которая полагается на PHP mail(), но она часто работает нестабильно или письма попадают в спам. Лучшее решение — настроить отправку через SMTP-сервер. В этой статье мы подробно разберём, как это сделать правильно, рассмотрим популярные плагины и покажем, как реализовать отправку писем через SMTP программно.
Почему стоит использовать SMTP для отправки писем в WordPress
Встроенная функция wp_mail() использует PHP mail(), которая зависит от настроек сервера. Это часто приводит к:
- Проблемам с доставкой писем.
- Письмам, которые попадают в спам.
- Невозможности отследить ошибки отправки.
SMTP (Simple Mail Transfer Protocol) — это стандартный протокол для отправки почты. Используя SMTP, вы подключаетесь к доверенному почтовому серверу, например, Gmail, Яндекс.Почта, или корпоративному серверу, и отправляете письма через него. Это надежно, безопасно и улучшает доставляемость.
Настройка SMTP с помощью плагинов WordPress
Плагин WP Mail SMTP — популярное решение для настройки SMTP
WP Mail SMTP — один из самых популярных плагинов, который позволяет перенастроить отправку почты через SMTP без сложного кода. Он поддерживает множество SMTP-сервисов, включая Gmail, SendGrid, Mailgun и другие.
Чтобы настроить SMTP через WP Mail SMTP:
- Установите и активируйте плагин через админку WordPress.
- Перейдите в раздел WP Mail SMTP > Настройки.
- Выберите ваш SMTP-сервер (например, Gmail).
- Заполните поля SMTP-сервера: хост, порт, шифрование (SSL/TLS), логин и пароль.
- Сохраните настройки и протестируйте отправку письма через встроенный тест.
Плагин также позволяет настроить отправителя и имя, что помогает избежать проблем с фильтрами спама.
Другие плагины для SMTP
- Post SMTP Mailer/Email Log — расширенный плагин с логированием писем и большим числом SMTP-провайдеров.
- Easy WP SMTP — простой и легкий плагин для базовой SMTP-настройки.
Программная настройка отправки писем через SMTP в WordPress
Если вы хотите обойтись без плагинов и сделать настройку отправки через SMTP программно, это можно сделать с помощью PHPMailer, который используется внутри WordPress.
Ниже приведён пример функции wphow_configure_smtp(), которую можно добавить в файл functions.php вашей темы или в плагин:
function wphow_configure_smtp(PHPMailer\PHPMailer\PHPMailer $phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.yandex.ru'; // SMTP сервер
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 465; // Порт SMTP
$phpmailer->Username = 'your-email@yandex.ru'; // Логин
$phpmailer->Password = 'your-password'; // Пароль
$phpmailer->SMTPSecure = 'ssl'; // Шифрование
$phpmailer->From = 'your-email@yandex.ru';
$phpmailer->FromName = 'WPHow Support';
}
add_action('phpmailer_init', 'wphow_configure_smtp');В этом примере мы настраиваем PHPMailer на использование SMTP Яндекса с SSL. Аналогично можно заменить настройки под любой другой SMTP-сервер.
Как проверить работоспособность SMTP-отправки
После настройки SMTP важно проверить, что письма отправляются корректно. Для этого вы можете использовать следующий код для тестовой отправки письма:
function wphow_send_test_email() {
$to = 'your-email@example.com';
$subject = 'Тестовое письмо с сайта WPHow';
$message = 'Это тестовое письмо, отправленное через SMTP из WordPress.';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($to, $subject, $message, $headers);
}
// Запустите эту функцию один раз для теста
// wphow_send_test_email();Разкомментируйте вызов функции, загрузите сайт и проверьте почту. Если письмо пришло — настройка выполнена успешно.
Типичные ошибки и способы их решения при настройке SMTP в WordPress
Ошибка аутентификации SMTP
Частая проблема — неправильный логин или пароль, или двухфакторная аутентификация на почте. В таких случаях:
- Проверьте корректность введённых данных.
- Если включена двухфакторная аутентификация — создайте и используйте специальный пароль приложения.
- Убедитесь, что SMTP-сервер и порт указаны правильно.
Письма не доходят или попадают в спам
Чтобы улучшить доставляемость:
- Установите корректные заголовки отправителя (
From,Reply-To). - Настройте SPF, DKIM и DMARC для вашего домена (это записи DNS, которые подтверждают право отправлять письма).
- Используйте проверенные SMTP-сервисы с хорошей репутацией.
Проблемы с сертификатами SSL/TLS
Если сервер не поддерживает SSL или сертификаты устарели, можно попробовать сменить порт (например, с 465 на 587) и использовать TLS вместо SSL. Также в плагинах часто есть опция отключить проверку сертификатов (не рекомендуется в продакшене).
Заключение
Настройка отправки писем через SMTP в WordPress значительно повышает надежность и качество доставки сообщений. Воспользуйтесь готовыми плагинами для быстрого старта или настройте SMTP вручную через phpmailer_init. Не забывайте проверять корректность учётных данных и настройки безопасности вашего почтового сервера.