На цій сторінціЯк WordPress надсилає електронні листи за замовчуванням
Сайт на WordPress надсилає більше листів, ніж думає його власник. Сповіщення з контактної форми. Лист для скидання пароля. Вітання нового користувача, сповіщення про необхідність перевірити коментар, а в інтернет-магазині ще й усі підтвердження замовлень, рахунки та оновлення статусу доставки від WooCommerce. Більшість цих листів ніхто не оформлював і не перевіряє, доки клієнт не напише, що лист із замовленням так і не надійшов.
Якщо один із цих листів потрапив у спам, перш ніж змінювати текст, перевірте, як саме повідомлення надсилається із сервера. У WordPress за замовчуванням використовується варіант із найгіршою доставлюваністю.
Як WordPress надсилає електронні листи за замовчуванням
Сам WordPress і майже кожен плагін, який надсилає листи, включно з WooCommerce та плагінами форм, використовують одну функцію, wp_mail(). Вона передає повідомлення до PHPMailer, який за замовчуванням передає його функції PHP mail(), а та передає його поштовій програмі, встановленій на сервері хостингу. Жодного входу до поштового провайдера, жодного підпису, жодного запису у вашому DNS, який підтверджує, що цьому серверу дозволено надсилати листи від вашого домену.
Як адресу відправника WordPress використовує wordpress@, після чого додає домен вашого сайту (WordPress видаляє початковий префікс www.). Якщо ви ніколи її не змінювали, саме цю адресу ваші клієнти бачать у полі From, хоча на багатьох сайтах таку поштову скриньку ніхто не створював.
На спільному хостингу повідомлення потім надсилається із сервера хостингу через IP-адресу, яку використовує багато інших сайтів. Якщо один із них надсилає листи за придбаним списком адрес або його зламують і він починає масово розсилати спам, репутація цієї адреси погіршується. Ваші листи для скидання пароля надсилаються з тієї самої адреси, що й їхні повідомлення.
Отже, стандартна інсталяція WordPress надсилає листи, у яких SPF не узгоджується з вашим доменом. Адреса для повернення листів зазвичай залишається на власному доменному імені сервера хостингу, а якщо замість неї там опиниться ваша адреса, перевірка SPF одразу завершується помилкою. Підпису DKIM для вашого домену також немає, тому перевірка DMARC завершується помилкою. Gmail і Yahoo запровадили свої вимоги до відправників у лютому 2024 року. У травні 2025 року Microsoft зробила те саме для доменів, які надсилають понад 5 000 повідомлень на день до Outlook.com. З листопада 2025 року Gmail відхиляє більше листів, які порушують його правила, замість того щоб переміщувати їх у спам.
Надсилайте через справжній поштовий сервіс
Найважливіше виправлення, відмовитися від використання mail(). Установіть SMTP-плагін (зазвичай використовують WP Mail SMTP, FluentSMTP і Post SMTP, кожен із них має безкоштовну версію) та підключіть його до сервісу, який належним чином надсилає пошту: провайдера вашої поштової скриньки, наприклад Google Workspace або Microsoft 365, чи сервісу транзакційної пошти, як-от Amazon SES, Brevo, SendGrid або Mailgun.
Плагін замінює транспортний механізм у wp_mail(), тому всі листи від усіх плагінів надсилаються новим способом без змін у самих плагінах. Якщо плагін підтримує API провайдера, використовуйте його замість звичайного SMTP із паролем. WP Mail SMTP зазначає, що надсилання через API працює, навіть коли ваш хостинг блокує порти SMTP.
Наступний крок часто пропускають. Автентифікуйте домен у цього провайдера: кожен із них надає записи DNS, які потрібно опублікувати, зазвичай два або три записи CNAME для DKIM та SPF include або власний домен return-path. Поки цих записів немає у вашому DNS, провайдер указує у підписі власне ім’я, і перевірка DMARC завершується невдало так само, як і на хостингу.
Адреса From у контактних формах
Плагіни форм, зокрема Contact Form 7 і WPForms, дають змогу вибрати, що буде вказано в рядку From сповіщення, яке ви отримуєте. У багатьох конфігураціях там указують адресу відвідувача, щоб після натискання Reply відповідь надсилалася йому. Це здається розумним рішенням, але DMARC створено саме для того, щоб цьому запобігти.
Припустімо, відвідувачка на ім'я Анна пише з адреси anna@yahoo.com. Тепер ваш сайт надсилає повідомлення, яке нібито походить від yahoo.com, через сервер, якому Yahoo ніколи не надавав дозволу. yahoo.com публікує політику DMARC p=reject, тому одержувач, який дотримується цієї політики, відхиляє сповіщення як підроблене. Якщо відвідувач використовує Gmail, політика м'якша, і повідомлення частіше потрапляє до спаму. Саме про це WPForms попереджає у своїй документації.From належить вам, Reply-To належить відвідувачу
Натомість налаштуйте форму так:
- From: адреса у вашому домені, наприклад
forms@yourdomain.com, у тому самому домені, для якого автентифіковано ваш SMTP-плагін. - Reply-To: адреса відвідувача з поля форми. Після натискання Reply відповідь усе одно буде надіслано Анні.
- To: поштова скринька, яку ви справді читаєте.
У Contact Form 7 це вкладка Mail: укажіть власну адресу в полі From і додайте Reply-To: [your-email] у розділі Additional headers. Інші плагіни форм мають поле Reply-To в налаштуваннях сповіщень.
Електронні листи WooCommerce
WooCommerce має власні налаштування відправника: WooCommerce, потім Settings, потім Emails, у розділі Email Sender Options, де вказуються ім’я «From» та адреса «From». За замовчуванням використовується адреса електронної пошти адміністратора сайту. Якщо людина, яка встановила магазин, указала там адресу Gmail, кожне підтвердження замовлення надсилається так, ніби воно походить із gmail.com, і не проходить DMARC з тієї самої причини, що й контактна форма вище. Укажіть там адресу у вашому автентифікованому домені. Назва магазину добре підходить як ім’я відправника. (У сповіщеннях про замовлення, які надсилаються вам, WooCommerce уже вказує клієнта в Reply-To, і це правильний підхід.)
З електронними листами магазину виникають дві проблеми, яких немає в контактної форми.
Перша проблема полягає в обсязі. Якщо плагін розпродажів або розсилок надсилає листи клієнтам тим самим маршрутом, що й підтвердження замовлень, маркетингові й транзакційні листи використовують спільну репутацію. Якщо на розсилку надходять скарги, це шкодить і листам із квитанціями. Надсилання цих двох типів листів через різні сервіси розділяє їх, а окремий піддомен для маркетингових листів трохи допомагає, хоча одержувачі все одно певною мірою враховують репутацію основного домену.
Друга проблема стосується відписки. Підтвердження замовлень і скидання паролів є транзакційними листами, тому правило Gmail і Yahoo щодо відписки одним натисканням на них не поширюється. Запит на відгук, нагадування про покинутий кошик або лист «вам також може сподобатися», надісланий колишнім покупцям, є маркетинговим. Якщо ви надсилаєте такі листи у великому обсязі, правило поширюється на них повністю, а це означає, що потрібен заголовок List-Unsubscribe з можливістю відписатися одним натисканням. Перевірте, чи додає цей заголовок розширення, яке їх надсилає. Наведений нижче тест покаже результат у будь-якому разі.
DNS, простими словами
Незалежно від сервісу, через який ви надсилаєте пошту, вашому домену потрібні три компоненти в DNS, щоб пошта викликала довіру. Докладний опис наведено в матеріалі Пояснення SPF, DKIM і DMARC, а тут пояснено, що це означає для сайту WordPress.
- SPF. Один TXT-запис у вашому домені з переліком тих, хто може надсилати від його імені. Для багатьох сервісів надсилання тут нічого змінювати не потрібно, оскільки вони забезпечують узгодження через власний домен для повернених листів. Якщо ваш сервіс усе ж вимагає додати
include:, а домен уже має запис для вашого поштового провайдера, додайте його до цього запису. Не створюйте другий: два записи SPF є помилкою, через яку обидва припиняють працювати. Перевірте результат за допомогою засобу перевірки SPF. - DKIM. Записи, які надав вам сервіс надсилання. Щойно вони почнуть діяти, сервіс підписуватиме кожен лист вашим доменом. Саме цей підпис перевіряє DMARC.
- DMARC. TXT-запис за адресою
_dmarc.yourdomain.com. Почніть ізv=DMARC1; p=none; rua=mailto:та адреси, пошту на якій ви читаєте, а потім посильте політику, коли звіти покажуть, що всі ваші листи проходять перевірку. Засіб перевірки DMARC прочитає ваш поточний запис.
Майте на увазі, що сервер хостингу все ще може надсилати щось самостійно, наприклад через завдання cron або старий плагін, який викликає mail() безпосередньо замість wp_mail(). Такі листи обходять плагін SMTP, і у звітах DMARC вони відображатимуться як неочікуване для вас джерело.
Тестування справжніх листів, а не тестового повідомлення
У кожному SMTP-плагіні є кнопка "send test email", але вона підтверджує лише те, що з’єднання працює. Вона не показує підтвердження замовлення в тому вигляді, у якому його формує WooCommerce, сповіщення з форми з його заголовком Reply-To або лист для скидання пароля з посиланням, яке додає WordPress.
Тому я змушую WordPress надсилати справжні листи. Тестова адреса з головної сторінки приймає одне повідомлення, тому отримуйте нову адресу для кожного листа, який хочете перевірити. Для форми на хвилину вкажіть цю адресу як одержувача сповіщення та надішліть форму. Для WooCommerce оформте тестове замовлення, вказавши цю адресу як електронну адресу клієнта. Для скидання пароля призначте цю адресу тестовому користувачу та надішліть запит на скидання. Для кожного повідомлення створюється окремий звіт із результатами SPF, DKIM і DMARC та їх узгодження, перевіркою за 21 списком блокування, аналізом вмісту й посилань, а також правил для масових відправників. Щоб визначити папку в Gmail, Outlook, Yahoo та інших провайдерів, те саме повідомлення потрібно надіслати на список поштових скриньок із маркером у темі. Форма або замовлення в магазині не можуть цього зробити, тому залиште цю перевірку для листів, які ви надсилаєте самостійно.
Якщо ви не хочете створювати тестові замовлення вручну, безкоштовний плагін WordPress надсилає ці повідомлення через власну функцію wp_mail() вашого сайту, тобто тим самим шляхом, яким надходять листи вашим клієнтам, і показує результат у панелі керування. Він також помічає, коли сайт починає надсилати тип листів, якого раніше не бачив.
Якщо лист усе ще потрапляє до спаму
Якщо автентифікація проходить успішно, адреса From належить вашому домену, але лист усе одно потрапляє до спаму, перевірте репутацію сервера, через який ви його надсилаєте. IP спільного хостингу в списку блокування часто є причиною, якщо ви досі використовуєте mail(). Це можна перевірити за допомогою інструмента перевірки списків блокування. Вміст листа впливає менше, ніж зазвичай вважають. Сповіщення з форми з одним посиланням і трьома рядками тексту саме по собі рідко активує фільтр. Але лист WooCommerce з перевантаженим HTML-шаблоном, одним великим зображенням і сервісом скорочення посилань може це зробити.
Перевірте один лист, виправте те, що вказано у звіті, і надішліть його ще раз на нову адресу.