Курсы обучения
+7 (351) 777-80-70
2023.04.07

Почему не отправляются письма?

Как правило, есть две основные причины, почему с сайта не отправляются почтовые сообщения:

  1. возникла ошибка со строны хостинга;
  2. почтовый адрес отправителя является техническим;
  3. параметр BX_CRONTAB_SUPPORT имеет значение "true".

В первом случае ошибки, мешающие корректной отправке почты, можно определить за счет проверки системы, в результате которой будут отображено сообщение, представленное на скриншоте:



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

Второй же случай зачастую встречается при некорректной настройки почтового адреса сайта.
Само сообщение, в данном случае, успешно отправляется, однако вместо указанного адреса отправителя подставляется технический адрес от хостинга, который выглядит подобным образом:



В этом случае также нужно обратиться к сотрудникам хостинга, но уже для решения вопроса с подстановкой указанного технического адреса.

Также может возникнуть ситуация, когда после обращения в службу поддержки хостинга сотрудники высылают подобный ответ:


На наших серверах запрещена подмена отправителя: адрес отправителя должен совпадать с адресом, под которым выполняется авторизация на SMTP-сервере. Для этого, необходимо помимо заголовка From передавать почтовому серверу в функции mail аргумент -f Пример: mail("получатель", "тема", "текст", "заголовки", "-f адрес отправителя") -f_адрес_отправителя (слитно) Информация по данному вопросу доступна в документации PHP - http://www.php.net/function.mail Прикладываю пример кода:

В данном случае единственно оптимальным вариантом является настройка SMTP-подключения для отправки почтовых сообщений.
Данный функционал относится непосредственно к платформе Битркис и описывается в статье Локальные настройки SMTP-сервера

О третьем варианте можно узнать, проведя на сайте проверку системы - проблема с параметром BX_CRONTAB_SUPPORT является частой причиной скопления неотправленных писем. Причиной тому является то, что при активации параметра, т.е. когда задано значение "true", система перестает отправлять сообщения до тех пор, пока не дождется выполнения cron-агентов, которых может и не быть.
В данном случае, рекомендуется уточнить у специалиста, активировавшего параметр BX_CRONTAB_SUPPORT, зачем, собственно, была произведена активация, либо просто отключить параметр, заменив значение "true" на "false".

Наши решения