Skip to content

Все для WordPress, веб-розробки — і не тільки

🔧 Чому WordPress не надсилає листи і як це виправити

🔧 Чому WordPress не надсилає листи і як це виправити

Ви перевірили пошту, а там порожньо. Ні листа зі скиданням пароля, ні сповіщення про замовлення, ні тестового повідомлення з контактної форми. Клієнти пишуть у підтримку, а відповіді не доходять. WordPress мовчить, і незрозуміло, в чому річ.

Проблема до болю знайома кожному, хто запускав сайт на WordPress. Поштовий сервер за замовчуванням працює через mail(), вбудовану функцію PHP. Хостинг-провайдери часто блокують її, а листи потрапляють у спам або не надсилаються взагалі.

Спойлер: це лікується за 15-20 хвилин налаштуванням SMTP-сервера. Далі, покроковий розбір причин, діагностика та два робочі способи налаштування: через Gmail API та через Mailgun. Без паніки, з ілюстраціями.

💡 Швидкий огляд:

  • Перевіряємо, чи живий поштовий сервер WordPress, плагін Check Email за хвилину покаже реальну картину
  • Дізнаємося, чому mail() ненадійний і як SMTP вирішує проблему
  • Налаштовуємо Gmail SMTP з OAuth 2.0, покроково, від консолі Google до зеленого статусу
  • Підключаємо Mailgun через WP Mail SMTP, для сайтів із трафіком, яким потрібно понад 100 листів на добу
  • Розбираємо часті питання: чому листи потрапляють у спам, який порт обрати, що робити з помилкою автентифікації

Чому WordPress не надсилає листи

WordPress за замовчуванням використовує функцію wp_mail(), яка всередині викликає PHP-функцію mail(). Проблема в тому, що mail() — це найпростіший механізм без автентифікації. Сучасні поштові сервіси, як-от Gmail, Yahoo та Outlook, вимагають шифрування та перевірки відправника. Без них лист або блокується хостингом, або позначається як спам приймаючою стороною.

Друга часта причина, відсутність DKIM і SPF-записів у DNS. Це цифрові підписи, які повідомляють поштовим серверам: «відправник справжній, лист не підробка». Без них той самий Gmail відправить ваше повідомлення прямісінько до теки «Спам».

Нарешті, винними можуть бути плагіни. Деякі антиспам-рішення та плагіни контактних форм перехоплюють чергу листів і блокують «підозрілі» відправлення. Особливо це стосується масових розсилок, для них mail() не годиться в принципі.

Як перевірити роботу поштового сервера WordPress

Перш ніж лізти в налаштування SMTP, виключіть варіант із мертвим mail(). Плагін Check Email робить саме це: надсилає тестовий лист через стандартний механізм WordPress і показує результат.

Встановіть Check Email з репозиторію WordPress (Plugins → Add New → введіть «Check Email»), активуйте та перейдіть у Tools → Check Email. Введіть свою адресу, натисніть «Send test email», і за кілька секунд побачите звіт.

Звіт плагіна Check Email після тестового надсилання

Перевірте теки «Вхідні» та «Спам». Якщо лист надійшов, mail() працює і проблема в конкретному плагіні (контактна форма, WooCommerce). Зверніться до підтримки того плагіна. Якщо листа немає, mail() заблокований хостингом, потрібен SMTP.

Як налаштувати SMTP через Gmail у WordPress

SMTP (Simple Mail Transfer Protocol) — це протокол з автентифікацією та шифруванням. На відміну від голого mail(), листи через SMTP проходять перевірку справжності, не блокуються хостингом і рідко потрапляють у спам.

Перший спосіб, плагін Gmail SMTP, який підключає WordPress напряму до вашого облікового запису Google через OAuth 2.0. У нього понад 100 відгуків на WordPress.org і регулярні оновлення. Безкоштовна версія дозволяє надсилати до 100 листів на добу, для невеликого сайту чи блогу цього достатньо.

Встановіть Gmail SMTP з офіційного репозиторію WordPress, активуйте.

Сторінка плагіна Gmail SMTP на WordPress.org

Далі потрібна Google Cloud Console. Перейдіть на console.cloud.google.com, створіть новий проєкт.

Створення нового проєкту в Google Cloud Console

У бічному меню виберіть «APIs & Services» → «Credentials», натисніть «Create Credentials» і виберіть «OAuth client ID». Система попросить налаштувати екран згоди, вкажіть тип «External» і заповніть обов'язкові поля (назва застосунку, email підтримки). Натисніть «Save and Continue».

Налаштування OAuth client ID в консолі Google Cloud

Поверніться до створення OAuth client ID: тип застосунку, «Web application», назва, «Gmail SMTP».

Форма створення вебзастосунку в Google Cloud Console

Тепер перемкніться назад до адмінки WordPress: у налаштуваннях плагіна Gmail SMTP скопіюйте Authorized Redirect URL.

Налаштування плагіна Gmail SMTP з URL для переспрямування

Поверніться до консолі Google, вставте скопійовану URL-адресу в поле «Authorized redirect URIs», збережіть. Після збереження з’явиться вікно з Client ID і Client Secret, скопіюйте обидва значення та вставте у відповідні поля плагіна.

Вкажіть Gmail-адресу, з якої надсилатимуться листи (ту саму, під якою створювали проєкт), заповніть поле «From Email Address», задайте «From Name» (назву вашого сайту). Порт SMTP, 587 для TLS. Якщо використовуєте SSL-сертифікат, ставте 465. Натисніть «Save Changes», потім «Grant Permission» і пройдіть автентифікацію Google.

Конфігурація плагіна Gmail SMTP з полями Client ID та секрету

Після успішного надання дозволу в плагіні засвітиться зелений статус «Connected». Надішліть тестовий лист, якщо він надійшов, усе готово.

Як налаштувати Mailgun для надсилання листів у WordPress

Якщо сайту потрібно понад 100 листів на добу і ви хочете надійну інфраструктуру доставки, зверніть увагу на Mailgun. Це поштовий сервіс для розробників із безплатним тарифом до 100 листів на день (вхідні безплатно), а платні плани стартують від $35 на місяць за 50 000 листів. Головний плюс, детальна аналітика доставки: ви бачите, чи відкрито лист, чи потрапив він у спам.

Панель налаштування домену в сервісі Mailgun

Зареєструйтеся на mailgun.com. Після створення облікового запису додайте домен, Mailgun запропонує ввести піддомен (наприклад, mg.vash-sait.ru) і видасть DNS-записи: TXT для верифікації, MX для маршрутизації листів і CNAME для відстеження відкриттів.

Зайдіть у панель хостингу (cPanel, ISPmanager або аналог), відкрийте DNS-редактор і додайте видані Mailgun записи:

  • TXT-запис: Name, ваш піддомен, Type, TXT, TTL, 14400, TXT Data, значення з панелі Mailgun
  • MX-запис: у розділі «MX Entry» пропишіть пріоритет і destination з Mailgun
  • CNAME: для відстеження відкриттів і кліків

DNS оновлюється від кількох хвилин до 48 годин. Статус перевіряйте в розділі «Domains» панелі Mailgun, коли засвітиться «Active», можна рухатися далі.

Для зв’язки Mailgun із WordPress встановіть WP Mail SMTP, найпопулярніший SMTP-плагін із понад 3 мільйонами активних встановлень. Перейдіть у Settings → WP Mail SMTP, у «From Email» вкажіть адресу на вашому домені, у «From Name», назву сайту. У полі «Mailer» оберіть «Mailgun».

Налаштування підключення Mailgun у плагіні WP Mail SMTP

Вставте Private API Key із панелі Mailgun (розділ «API Keys») і доменне ім’я, яке реєстрували. Увімкніть опцію «Set the return path to match the From Email» — це вирівнює зворотну адресу та знижує ймовірність потрапляння в спам. Натисніть «Save Settings» і надішліть тест через вкладку «Email Test».

Відеоінструкція: налаштування SMTP у WordPress

Якщо зручніше дивитися, а не читати, ось відеоурок із налаштування SMTP у WordPress, від встановлення плагіна до першого надісланого листа:

⁉️🤔 Часті запитання

Чому листи з WordPress потрапляють у спам, навіть якщо SMTP налаштовано?

Найчастіше проблема у відсутності SPF і DKIM-записів у DNS домену. Без них поштовий сервер отримувача не може перевірити, що саме ваш сервер має право надсилати листи з цього домену. Додайте TXT-запис SPF (v=spf1 include:_spf.google.com ~all для Gmail або аналогічний для Mailgun) і DKIM-ключ із панелі поштового сервісу. Другий фактор, репутація IP: на дешевому хостингу IP-адреса могла бути помічена в спам-розсилках до вас.

Який SMTP-порт обрати: 587 чи 465?

Порт 587 з TLS — це сучасний стандарт, рекомендований IETF для клієнтського надсилання листів. Порт 465 з SSL, застаріла альтернатива, яку досі підтримують багато провайдерів для сумісності. Ставте 587 з TLS, якщо поштовий сервіс явно не вимагає 465.

Плагін Gmail SMTP видає помилку автентифікації. Що робити?

Три найчастіші причини: не збігаються URL редиректу (перевірте, що в консолі Google і плагіні одна й та сама адреса), застосунок у Google Cloud перебуває в статусі «Testing» (переведіть у «Production» або додайте ваш Gmail до списку тестових користувачів), або ввімкнено двофакторну автентифікацію Google без пароля застосунку (створіть пароль застосунку в налаштуваннях безпеки Google).

Чи можна надсилати масові розсилки через Gmail SMTP?

Ні. У Gmail жорсткі ліміти: 100 листів на добу через плагін Gmail SMTP, до 2000 через Google Workspace. Для email-маркетингу та регулярних розсилок використовуйте Mailgun, Brevo (колишній Sendinblue) або SendGrid, у них є інтеграції з WordPress і виділена інфраструктура доставки.

Чи потрібен платний тариф Mailgun для невеликого сайту?

Безплатного тарифу Mailgun (100 листів на день) вистачає середньостатистичному сайту: сповіщення WooCommerce про замовлення, скидання паролів, підтвердження реєстрацій, листи з контактної форми. Платний план має сенс, коли добовий обсяг перевалює за сотню або потрібна аналітика відкриттів зі зберіганням логів довше ніж 24 години.

Чому не варто покладатися на вбудовану mail() у WordPress?

Функція mail() не автентифікує відправника, не шифрує з’єднання і не додає DKIM/SPF-підписів. Більшість хостинг-провайдерів або блокують її на рівні сервера (через ризик спам-атак), або пропускають трафік через спільні IP з низькою репутацією. Результат: листи не доходять у значній частині випадків, а ті, що доходять, часто позначаються як спам.

Чи варто переходити на SMTP прямо зараз

Якщо з сайту не йдуть листи скидання пароля, клієнти не отримують сповіщення про замовлення, а контактна форма мовчить, відповідь однозначна: SMTP потрібен сьогодні. Це не питання «чи варто» — це питання «який саме».

Для особистого блогу та сайту-візитівки вистачить зв’язки Gmail SMTP + ваш Gmail-акаунт. Налаштували за 20 хвилин і забули. Для сайту з товарами, курсами або користувачами беріть WP Mail SMTP + Mailgun: безплатний тариф покриває потреби типового інтернет-магазину, а аналітика доставки підкаже, якщо щось піде не так.

Не відкладайте. Поки ви читаєте цей абзац, чийсь клієнт не отримав листа з підтвердженням. SMTP вирішує це раз і назавжди.