Перейти к содержимому
EVI Solutions

Контактная форма не отправляет письма: как их получать

Средне 20 мин Обновлено:

Краткий ответ

Если контактная форма не отправляет письма, чаще всего виновата неисправная отправка через PHP-функцию mail() или отсутствие SMTP-аутентификации. Сначала проверьте папку спама и логи, затем настройте SMTP-плагин с аутентификацией, после чего проверьте DNS-записи (SPF, DKIM, DMARC).

Как проявляется проблема

  • Письма с контактной формы не приходят на вашу почту
  • Пользователи сообщают, что не получили ответ
  • Письма попадают в папку спама
  • Форма показывает сообщение об успехе, но письмо не приходит
  • Ошибка «Could not instantiate mail function» или похожая

Частые причины

Функция PHP mail() не работает

Многие хостинг-провайдеры блокируют или ограничивают функцию PHP mail(), поэтому сообщения не отправляются. Это самая частая причина.

Отсутствие SMTP-аутентификации

Без SMTP-аутентификации почтовые серверы часто отклоняют сообщения или помечают их как спам. Настройка SMTP решает проблему.

Неверный адрес электронной почты получателя

В настройках формы может быть указан неверный адрес или адрес, которого не существует. Проверьте поле «Кому» в настройках плагина.

Спам-фильтры на стороне получателя

Сообщения могут фильтроваться как спам из-за отсутствия записей SPF, DKIM или DMARC. Проверьте папку спама и настройки фильтров.

Конфликт с другими плагинами

Некоторые плагины безопасности или кеширования могут блокировать отправку писем. Временно отключите их и протестируйте.

Пошаговое решение

  1. 1

    Проверьте папку спама и логи

    Сначала войдите в почтовый ящик получателя и проверьте папки «Спам» и «Нежелательная почта». Если у вас есть доступ к логам сервера, поищите ошибки, связанные с mail() или SMTP. В WordPress можно установить плагин для логирования писем (например, WP Mail Logging), чтобы увидеть, были ли сообщения вообще отправлены.

  2. 2

    Протестируйте отправку через PHP mail()

    Установите плагин «Check & Log Email» или «WP Mail SMTP» и при необходимости настройте его на использование PHP mail() как способа отправки. Отправьте тестовое письмо. Если сообщение не приходит, вероятно, функция PHP mail() заблокирована или работает неправильно. Большинство хостинг-провайдеров предлагают SMTP-аккаунт с аутентификацией, который следует использовать.

  3. 3

    Настройте SMTP-плагин

    Установите и активируйте плагин WP Mail SMTP или аналогичный. В настройках выберите «Other SMTP» и введите данные, предоставленные хостингом: хост (например, mail.vashdomen.ru), порт (587 для TLS или 465 для SSL), имя пользователя и пароль. Сохраните и отправьте тестовое письмо.

  4. 4

    Проверьте настройки контактной формы

    В настройках плагина контактной формы (например, Contact Form 7, WPForms) проверьте правильность адреса электронной почты получателя. В Contact Form 7 это поле «Кому» на вкладке «Почта». Убедитесь, что нет опечаток и что домен получателя принимает почту.

  5. 5

    Проверьте записи SPF, DKIM и DMARC

    Эти DNS-записи улучшают доставляемость. Запись SPF должна включать сервер, через который вы отправляете письма (например, v=spf1 include:_spf.google.com ~all). DKIM и DMARC часто настраиваются через панель хостинга или SMTP-сервис. Проверьте их с помощью инструмента, например MXToolbox.

  6. 6

    Отключите плагины безопасности и кеширования

    Временно деактивируйте плагины безопасности (например, Wordfence) и кеширования. Затем отправьте тестовое сообщение. Если заработает, снова активируйте плагины по одному, чтобы найти виновника.

  7. 7

    Проверьте, не блокирует ли хостинг отправку

    Некоторые хостинг-провайдеры блокируют порт 25 или требуют использовать их SMTP. Обратитесь в поддержку хостинга и спросите, какие SMTP-параметры использовать. Часто достаточно использовать их сервер.

  8. 8

    Установите плагин для альтернативной отправки

    Если ничего не помогает, установите плагин, например «Post SMTP» или «FluentSMTP», которые предлагают более продвинутые опции и логирование. Настройте согласно инструкции и протестируйте.

Если ничего не помогает

Если вы испробовали все шаги, а письма по-прежнему не приходят, обратитесь к хостинг-провайдеру с деталями: точное время отправки, адрес отправителя и получателя, и возможные ошибки из логов. Проверьте, нет ли у домена получателя строгих спам-фильтров (например, Microsoft 365 или Google Workspace), и попросите получателя добавить ваш адрес в белый список. Также рассмотрите использование специализированного сервиса для транзакционных писем (например, SendGrid, Mailgun), который имеет лучшую репутацию и доставляемость. Всегда тестируйте отправку на несколько адресов (Gmail, Outlook, Yahoo), чтобы понять, проблема глобальная или специфична для одного получателя.

Как избежать повторения

  • Регулярно обновляйте WordPress, плагины и тему
  • Используйте SMTP-аутентификацию вместо PHP mail()
  • Настройте записи SPF, DKIM и DMARC
  • Периодически тестируйте контактную форму

Когда лучше обратиться к специалисту

Если вы не можете получить доступ к панели хостинга, не знаете, как настроить DNS-записи, или подозреваете более серьезную проблему с сервером, обратитесь в IT-поддержку.

Создание сайтов · Быстрые, SEO-оптимизированные многоязычные сайты

Частые вопросы

Почему письма с контактной формы попадают в спам?

Чаще всего из-за отсутствия записей SPF, DKIM или DMARC, или потому что сервер отправляет без аутентификации. Настройте SMTP и DNS-записи, чтобы улучшить репутацию домена.

Как узнать, проблема в WordPress или на сервере?

Отправьте тестовое письмо через плагин SMTP. Если оно не приходит, проблема на сервере или в сети. Если приходит, проблема в настройках формы или плагина.

Безопасно ли использовать функцию PHP mail()?

PHP mail() не имеет аутентификации и легко может быть использована злоумышленниками. Рекомендуется SMTP с аутентификацией, который безопаснее и надежнее.

Поделиться
Не нашли решение?ИИ-помощник работает 24/7. Опишите проблему или отправьте скриншот ошибки и получите инструкцию для вашего случая.Спросить ИИ-помощника