На этой страницеКак WordPress отправляет письма по умолчанию
Сайт на WordPress отправляет больше писем, чем думает его владелец. Уведомление из контактной формы. Сброс пароля. Приветственное письмо новому пользователю, уведомление о комментарии, ожидающем модерации, а в интернет-магазине еще и все подтверждения заказов, счета и уведомления об отправке, предусмотренные WooCommerce. Большинство этих писем никто специально не настраивает и не проверяет, пока клиент не напишет, что письмо о заказе так и не пришло.
Если одно из этих писем попадает в спам, прежде чем менять текст, проверьте, как оно отправляется с сервера. По умолчанию WordPress использует для этого вариант с самой низкой доставляемостью.
Как WordPress отправляет письма по умолчанию
Сам WordPress и почти все плагины, отправляющие почту, включая WooCommerce и плагины форм, используют одну функцию, wp_mail(). Она передает сообщение в PHPMailer, который по умолчанию передает его функции PHP mail(), а та отправляет его через почтовую программу, установленную на сервере хостинга. Никакого входа в учетную запись почтового провайдера, никакой подписи и никаких записей в DNS, указывающих, что этот сервер может отправлять почту от имени вашего домена.
В качестве адреса отправителя выбирается wordpress@, после которого идет домен вашего сайта (WordPress удаляет начальное www.). Если вы его не меняли, именно этот адрес ваши клиенты видят в поле From, хотя на многих сайтах такой почтовый ящик никто никогда не создавал.
На виртуальном хостинге сообщение затем отправляется с сервера хостинг-провайдера через IP-адрес, который используется множеством других сайтов. Если один из них рассылает письма по купленной базе адресов или его взламывают и с него начинает массово отправляться спам, репутация IP-адреса ухудшается. При этом ваши письма для сброса пароля отправляются с того же адреса, что и их письма.
Таким образом, WordPress с настройками по умолчанию отправляет почту, для которой SPF не согласован с вашим доменом. Адрес возврата обычно остается в домене собственного имени сервера хостинга, а если вместо него там оказывается ваш адрес, проверка SPF полностью завершается с ошибкой. Подписи DKIM для вашего домена тоже нет, поэтому проверка DMARC завершается с ошибкой. Gmail и Yahoo ввели свои требования к отправителям в феврале 2024 года. Microsoft сделала то же самое в мае 2025 года для доменов, которые отправляют более 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 и директиву include для SPF либо отдельный домен 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-шаблоном, одним большим изображением и сервисом сокращения ссылок может попасть под фильтр.
Проверьте одно письмо, исправьте указанные в отчете проблемы и отправьте его снова на новый адрес.