Bitrixvm отправка почты ошибка не работает

В письме в поле кому числится получатель undisclosed-recipients

Чтобы отображался e-mail получателя, в настройках главного модуля 1С-Битрикс необходимо активировать пункт «Дублировать E-Mail адрес в заголовок» во вкладке «Почта»

Дублировать email адрес в заголовок

Как проверить работу сокетов?

Выполните через командную PHP-строку следующий код:

$fp = fsockopen("ssl://smtp.mail.ru", 465, $errno, $errstr, 30);
if (!$fp) {
	echo "Error: $errstr ($errno)n";
}else
{
	echo "Connected";
}
fclose ($fp);

Если в результате вы получили «Connected», значит все работает.

Если в результате вы получили «Error: (0)», значит у вас не настроена поддержка OpenSSL.

Как узнать актуальные настройки для подключения?

Настройки для Яндекс — https://yandex.ru/support/mail/mail-clients.html
Настройки для Mail.ru — https://help.mail.ru/mail-help/mailer/popsmtp
Настройки для Gmail.com — https://support.google.com/mail/answer/7126229?hl=ru

Не отправляются сообщения

  1. Проверьте наличие необходимого кода в файле /bitrix/php_interface/init.php или /local/php_interface/init.php, смотря какой именно вы используете. Также проверьте, чтобы не было другого вызова фукнции custom_mail().
  2. Проверьте правильность указанных настроек для почтового ящика.
  3. Включите модуль, если не включен.
  4. Отправьте тестовое письмо.
  5. Проверьте систему на наличие ошибок. Если настроено выполнение агентов на cron и он не срабатывает, то сообщения не будут отправлены до тех пор, пока не будет должным образом настроено выполнение файла cron_events.php.

Ошибка при проверке системы «Ошибка! Есть ошибки при отправке системных почтовых сообщений, число неотправленных сообщений: N»

Выполните через командную PHP-строку следующий код:

$result = CEvent::CheckEvents();
var_dump($result);

Если все ок, то должен выдать «string(0) «»» иначе может отобразить ошибку, которая мешает отправке сообщений.

У меня не происходит авторизация через Gmail, что делать?

Разрешите доступ небезопасным приложениям https://support.google.com/accounts/answer/6010255?hl=ru

Подойдет ли модуль для Email-маркетинга?

Наше решение полностью совместимо с модулем email-маркетинга и рассылок. Но по опыту, большую часть писем почтовый сервис помечает как спам и не отправляет получателю, если для отправки используются обычные почтовые ящики или корпоративная почта. Для массовых рассылок мы советуем использовать специализированные сервисы для рассылок, например SendPulse.

Кириллические домены для почты

Мы не рекомендуем использовать домены в зоне .рф для организации отправки почты через smtp с сайта.

Собственный сервер исходящей почты

Работа модуля гарантируется только с основными почтовыми сервисами: Яндекс, Gmail и Mail.ru. Если вы используете собственный сервер отправки, то внимательно указывайте данные для подключения.

Яндекс.Почта Пароль не был принят сервером как верный Ошибка авторизации (пароль верный)

Модуль не поддерживает XOAUTH2 авторизацию. Скорее всего, у вас включена авторизация через пароли приложений.

Почтовые программы

Отключить данную опцию можно на странице управления паролями https://passport.yandex.ru/profile/access

Не работает на Виртуальной машине BitrixVM 

Не рекомендуется использовать модуль, если у вас Виртуальная машина BitrixVM. Для отправки почты через smtp, в BitrixVM присутствует соответствующая настройка https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=37&CHAPTER_ID=08853

На почту приходит html-код

В настройках главного модуля, вкладка «Почта и СМС», отключите опцию «Генерировать текстовую версию для html-писем»

Здравствуйте.
На VPS развернут Bitrix VM по инструкции

https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=37&LESSON_ID=6489&LESSON_PATH=3908.6488.6489

Так же перенесена копия сайта. Сайт работает. Однако, проблема с почтой.
Важна только отправка почты, неважно через какой сервер, поэтому предполагается использование msmtp
Все настройки сделаны как тут

https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=37&LESSON_ID=6689

а именно:
1) файл /home/bitrix/.msmtprc создан и настроен на отправку писем чере yandex.ru (грубо говоря, все настройки этого файла взяты со старого сервера, где почта работала)
2) символическая ссылка с /home/bitrix/.msmtprc на /etc/msmtprc тоже прописана.

Для проверки ошибок выполняю функцию (тоже из инструкции)
echo -e «test message» | /usr/bin/msmtp —debug -t -i _тут_любой_почтовый_адрес_

Письмо приходит (пусть и в спам, но это пока не важно). И лог msmtp пишется.

Однако, когда на сайте, в командной строке php набираю:

if(mail(«_тут_адрес_», «test», «test»)){
  echo «true»;
}else{
  echo «false»;
}

возвращает false. И письма нет, и лог msmtp НЕ пишется
Понимаю, что что-то где-то не донастроено для функции mail(). Только  вопрос что и где?

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

Проверка таблицы очереди писем

Идем в административную панель Битрикса по пути: Настройки / Производительность / Таблицы. Ищем таблицу b_event и проваливаемся по ссылке.

Именно в эту таблицу попадают письма с сайта в очередь, а затем отправляются на хитах или на агентах.

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

На открывшейся странице можем отыскать сообщение, которое не отправилось. Проматываем в самый конец к колонке SUCCESS_EXEC – это колонка записывает состояние отправки письма.

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

Варианты статуса отправки (SUCCESS_EXEC):

Y – означает, что письмо было успешно отправлено

N – говорит о том, что событие еще не обработано и письмо не отправлено. В этом случае стоит полную проверку сайта и проверить настройки dbconn.php. Проверить корректность настройки почтовых шаблонов и их привязки к сайтам.

F – сообщение не было отправлено. Необходимо проверить логи сервера или хостинга.

0 – не активен или отсутствует почтовый шаблон (Настройки / Настройки продукта / Почтовые шаблоны)

Проверка системы

Проверка системы расположена на странице Настройки / Инструменты / Проверка системы. В проверке уже встроен инструмент, который проверяет возможность отправки письма с помощью стандартной PHP функции mail. Этаки быстрый проверяльщик работы почты.

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

Если здесь уже возникает ошибка, то проблему стоит идти смотреть в логи сервера.

Проверка логов сервера

Если ошибка ошибка идет глубже и у вас VM Bitrix, идем в консоль сервера по пути /home/bitrix/ и ищем логи с префиксом .msmtp_ (по умолчанию). Смотрим и ловим ошибки в этом файле. Логи лучше просматривать с помощью утилиты mc.

Сама конфигурация почтовых настроек расположена в файле /home/bitrix/.msmtrpc

Если письма в Битриксе отмечены как успешно отправленные, но письмо не пришло и в логах отсутствует какая-либо информация – следует обратить внимание на логи в /var/log/. Там отобразится ошибка, которая возвращается функцией mail.

Проверить возможность отправки также можно с помощью консольных команд (но в данном случае будет использоваться отправитель по умолчанию – default)

> php -a
> mail('test@example.com', "Test", "Test message");
> exit

Если произойдет ошибка при отправке, то сообщение будет у вас на экране.

Ошибки

Частая ошибка – это когда в письмах отправителем указан адрес отличимый от названия аккаунта (поле FROM). Поэтому задайте в настройках сайта нужный адрес или в почтовых шаблонах в поле «От кого». В этом случае, если требуется, чтобы человек мог ответить на другую почту, то можете указать электронную почту в качестве обратного адреса в почтовом шаблоне.

Другая ошибка – это отсутствие настроек для отправителя по умолчанию. Необходимо внести корректные настройки адреса отправителя (указать tsl, метод авторизации и т.п.)

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

На этом все, надеюсь статья была вам полезна. Если у вас возникнут вопросы, задавайте в комментарий.

Прежде чем приступить

Подключаемся к серверу по SSH и попадаем в меню Bitrix-окружения. Для начала нужно выйти из меню, набрав 0 для выхода.

Если в системе ранее был установлен sendmail, тогда его необходимо удалить:

# rpm -e --nodeps sendmail

Установка Postfix

# yum install postfix

Добавим postfix в автозагрузку

# chkconfig postfix on

Запустите postfix:

systemctl start postfix

теперь необходимо войти в консольное меню VMBitrix,
# /root/menu.sh


 

Выбираем п.6 и затем п. 4

6. Manage sites in the pool

4. Change email settings on site


Первым делом набираем название сайта из списка в консоли выше, к которому создаем файл настроек для отправки почты, к примеру baks.dev. В консоли появяться последовательно вопросы и в круглых скобках подсказки в кним с значениями по умолчанию. Если оставить поле не заполненым и нажать Enter, то в файл настроек запишуться те самые данные по умолчанию. Так как мы настраиваем отправку почты с помощью почтового сервера Postfix, то принимаем все занчения по умолчанию.
 

Enter site name (default) or 0 to exit: baks.dev

Затем потребует заполнит email, который будет использоваться по умолчанию, например noreply@baks.dev
 

Enter From email address (ex. bob@example.org):  noreply@baks.dev

Указываем локальный адрес сервера 127.0.0.1 и порт 25, либо просто жмем Enter на двух следующих пунктах
 

Enter server address or DNS (127.0.0.1):
Enter server port (25):

Разрешаем отправку почты без авторизации, заполнив N и жмем Enter

 Do you want to use SMTP authentication on 127.0.0.1:25? (N|y): N


также отключаем TLS , заполнив n и жмем Enter
 

 Do you want to enable TLS for 127.0.0.1:25 (n|Y):n

Если ошибок не выявлено, тогда вы должны получить уведомление

Configure email for the site baks.dev
 

В результате будет создан файл /home/bitrix/.msmtprc, в котором будут указаны внесённые настройки:
 


# smtp account configuration for baks.dev
account white-sign.ru
logfile /home/bitrix/msmtp_baks.dev.log
host 127.0.0.1
port 25
from noreply@baks.dev
aliases /etc/aliases
keepbcc off
auth off

Перезапустим Postfix

systemctl restart postfix

На этом мы завершили настройку сервера отправки почты.
Проверьте работу спомощью командной стрки: переходим в панели администрирования в Настройки — Инструменты — Командная PHP-строка, втсавляем код и выполняем


if (mail("you_mail@gmail.com", "test subject", "test body" ,"From: test@bitrix.ru"))
echo "Сообщение передано функции mail, проверьте почту в ящике.";
else
echo "Функция mail не работает, свяжитесь с администрацией хостинга."

Если отправка не работает, и письма не приходят на почту?

1. Проверьте, пожалуйста, настройки почтового события заполнения формы и его шаблона.

Откройте Панель управления — Настройки — Настройки продукта — Почтовые события; выберите событие.

На первой закладке, должны стоять галочки возле используемых на Вашем сайте кодов языка. На закладке «шаблоны» должна стоять галочка возле имени Вашего сайта, хотя бы у одного шаблона (обычно он там как раз один). Также, в настройках выбранного почтового шаблона (можно перейти прямо по ссылке со страницы «шаблоны», не забудьте только перед этим нажать «применить», если были сделаны какие-то настройки), должна стоять галочка «активен», и также должен быть выбран Ваш сайт. Также должны быть корректно заполнены поля «от кого» и «кому» (значения по-умолчанию #DEFAULT_EMAIL_FROM# и #EMAIL#, соответственно).

2. Если все эти настройки соответствуют истине, то в настройках модуля веб-формы отключите флаг «использовать упрощенный режим», перейдите в настройки соответсвующей формы, вкладка дополнительно, убедитесь, что флаг привязки к почтовому шаблону проставлен. Если и здесь все в порядке, то перейдите, пожалуйста, в Настройки-Инструменты-SQL-запрос и выполните такой запрос:

 select * from b_event where event_name like '%form%' order by date_insert desc

Найдите событие заполнения формы, смотрите в поле SUCCESS_EXEC:

стоит Y — письмо из продукта ушло, дальнейшую его судьбу попросите отследить администратора хостинга
стоит N — зайдите в файл /bitrix/php_interface/dbconn.php и проверьте не определены ли у Вас константы 
BX_CRONTAB и BX_CRONTAB_SUPPORT, если да — убрать их определение вообще из этого файла. Если после этого SUCCESS_EXEC также N, то необходимо перейти в папку /bitrix/managed_cache/ и попытаться удалить содержимое (обязательно через модуль управления структурой, а не через FTP), если получите ошибку — значит необходимо исправить проблему с доступом продукта к папкам, чтобы Вы могли удалить файлы и папки из кеша.
стоит F — функция mail() по какой-то причине вернула False при отправке. Наиболее типичные проблемы: 1. Не настроена функция mail() на хостинге. Решается с хостером.

3. Почтовый сервер не поддерживает формат письма. Пробовать изменять настройки отправки, убирать поле ВСС, убирать галочку «Дублировать email адрес в заголовке», ставить «Конвертировать 8-битные заголовки». Не помогает — запросить логи у администратора почтового сервера, чтобы посмотреть, в чем конкретно ошибка при отправке.

Стоит 0 (ноль) — значит, что-то неверно в настройках из пп.1-2 — проверьте еще раз.

Проверка отправки почты из консоли линукс
echo «Testing» | mail -s «Test» johndoe@example.comс
Ошибка
-bash: mail: command not found

Если php почта не отправляется, устанавливаем комманду
yum install mailx

Проверяем дальше
echo «Testing» | mail -s «Test» johndoe@example.comс
Ошибка
/usr/sbin/sendmail: No such file or directory
«/root/dead.letter» 9/216
. . . message not sent.

Устанавливаем sendmail
yum install sendmail sendmail-cf -y
chkconfig —level 345 sendmail on
service sendmail start

Проверяем дальше
echo «Testing» | mail -s «Test» johndoe@example.comс
Ошибка пропала, письма приходят

Но вот не задача…
PHP Функция mail() не работает
Вопрос решился письмом в службу поддержки firstVDS сервера
У меня на сервере VDS установлено веб окрежение битрикс
Необходимо было в файле /etc/php.d/bitrixenv.ini
сменить параметр sendmail_path
;sendmail_path = msmtp -t -i
sendmail_path = /usr/sbin/sendmail -t -i
и все заработало!

PS: для работы curl потребуется еще одна настройка
копируем данные из /etc/php.d/20-curl.ini.disabled в 20-curl.ini
service httpd restart

Без обратной связи сайт словно паралитик: все видит, а сказать ничего не может. Не поступают данные с веб — форм, корпоративные ящики не работают совсем или настраиваются с удивительными ухищрениями. Деньги заплачены, а про-стей-шая, э-ле-мен-тар-ней-шая, важ-ней-шая рабочая задача не решена! Что делать?

 
Проверяем настройки почтового события веб-формы и связанные шаблоны

Давайте перейдем по пути Панель управления -> Настройки -> Настройки продукта -> Почтовые события и выберем событие.

1. На первой вкладке галочки кодов языка включены?

2. На вкладке «Шаблоны» галочка имени сайта включена?

3. Почтовый шаблон активен?

4. Поле «От кого» заполнено верно (по умолчанию #DEFAULT_EMAIL_FROM#) ?

5. Поле «Кому» заполнено верно (по умолчанию #EMAIL#) ?

Все верно? Смотрим дальше. В настройках модуля веб-формы отключите галочку «использовать упрощенный режим». Перейдите в настройки формы на вкладку «дополнительно» и проверьте, включен ли флаг привязки к почтовому шаблону. Готово?

Перейдите по адресу Настройки -> Инструменты -> SQL-запрос и выполните такой запрос:

select * from b_event where event_name like ‘%form%’ order by date_insert desc

Найдя событие выполнения формы, просмотрите поле SUCCESS_EXEC. Если видите «Y», то письмо из продукта ушло, и вам следует отправить запрос в техподдержку хостинга. Если видите «N», то перейдите в файл

/bitrix/php_interface/dbconn.php

и проверьте, определены ли 2 переменные: BX_CRONTAB и BX_CRONTAB_SUPPORT. Если да, то отмените определение.

Повторите SQL-запрос и снова просмотрите поле SUCCESS_EXEC. Если снова видите «N», очистите кэш в папке  /bitrix/managed_cache/ через модуль управления структурой. Ни в коем случае ни через FTP! Если модуль выдаст ошибку, исправьте права доступа к папкам.

Если же значение «F», то функция mail() вернула значение False при отправке. Почему так бывает:

1. Не настроена функция mail() на хостинге. Обратитесь в техподдержку хостера.

2. Почтовый сервер не поддерживает формат письма. Попробуйте изменять настройки отправки, убирать поле ВСС, убирать галочку «Дублировать email адрес в заголовке», ставить «Конвертировать 8-битные заголовки». Если не поможет, запросите у администратора логи почтового сервера.

Наконец, если в поле «0», вернитесь к началу, настройкам почтовых событий, и проверьте заново.

 
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!

Назад в раздел

Проверить работу почты сайта под управлением Битрикс:

Битрикс посылает почтовые шаблоны функциями CEvent::Send() и CEvent::SendImmediate().

Письмо отправляется, если Битрикс нашел активный почтовый шаблон, подходящий под это событие и соответствующий текущему сайту.

Письма отправлены через CEvent::Send() попадают в таблицу b_event.

Чтоб проверить таблицу существует 2 способа 

первый: перейти на страницу

домен/bitrix/admin/perfmon_tables.php

и в поле Фильтр по имени таблицы ввести b_event. перейти по точному совпадению таблицы.

другой: описан ниже

Письма, попавшие в b_event, посылаются на агенте (хиты) или на cron (по расписанию). Отправляются не сразу.

Письма, посылаемые через SendImmediate  не попадают в b_event, а отправляются сразу.

Send и SendImmediate — обертки на функцию Битрикса bxmail, которая использует либо стандартную php-функцию mail, либо custom_mail, если она определена.

 Административный раздел->Рабочий стол->Настройки->Инструменты->Командная PHP-строка скопировать туда:

if( mail("mail_to@mail.com", "letter test", "my letter text",
"From: mail_from@mail.com
Reply-To: mail_from@mail.com
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: 8bit"
) ){
    echo 'Успешно отправлено!';
}else{
    echo 'Отправка не удалась!';
}

Поля «От кого» (mail_from@mail.com), «Кому»(mail_to@mail.com) поменять на свои.
Нажать ВЫПОЛНИТЬ.
Битриксовская отправка письма — обёртка над функцией mail().
Если «Отправка не удалась!» функция mail не работает, свяжитесь с администрацией хостинга.

  Далее нужно проверить срабатывает ли штатные события.
На D7:

 use BitrixMainMailEvent;
$arFields = array(
    "EVENT_NAME" => "ваше событие",
    "LID" => "код вашего сайта",
    "C_FIELDS" => array(
    "EMAIL"    => "mail_to@mail.com",
    "BCC"    => "mail_to@mail.com",
    "DEFAULT_EMAIL_FROM"    => "mail_from@mail.com",
    ),
    "DUPLICATE"=>"Y",
);
$result=Event::send($arFields);
if($result->GetId()){
    echo 'Успешно отправлено!';
}else{
    echo 'Отправка не удалась!';
}

Проверьте что поля «DEFAULT_EMAIL_FROM», «EMAIL», «EVENT_NAME» заполнены верно.

  Если не поддерживается D7:

$arEventFields = array(
     "EMAIL_TO"            => "mail_to@mail.com",
    "BCC"                 => "mail_to@mail.com",
   "DEFAULT_EMAIL_FROM"    => "mail_from@mail.com",
    "ORDER_LIST"    => "состав заказа",
    );
$result=CEvent::Send("ваше событие", "код вашего сайта", $arEventFields,'Y');
if(intval($result)){
    echo 'Успешно отправлено!';
}else{
    echo 'Отправка не удалась!';
}

 
Административный раздел->Рабочий стол->Настройки->Инструменты->SQL запрос пишем

   select * from b_event order by id desc

Обращаем свое внимание на колонки SUCCESS_EXEC и DUPLICATE. Иногда нужно подождать некоторое время (недолго) пока отработает запись в лог. Первый при установленном значении ‘Y’ говорит нам что отправка произошла успешно. Второй что письмо продублировано на скрытую копию ВСС (например администратору о совершенном заказе).
Что же делать если значения ‘N’, а отправка простого mail() выдала ‘Успешно отправлено!’ ?
Параметр SUCCESS_EXEC сообщает 
Y — все письма по всем почтовым шаблонам были успешно отправлены
F — все письма по всем почтовым шаблонам не смогли быть отправлены
P — часть писем отправлена успешно, часть писем — безуспешно
0 — почтовые шаблоны не были найдены
N — почтовое событие ещё не обрабатывалось функцией CEvent::CheckEvents

Если там стоит ‘N’

1) Возможно в настройках продукта включена отправка сообщений по крону. зайдите в файл /bitrix/php_interface/dbconn.php и проверьте не определены ли у вас константы BX_CRONTAB и BX_CRONTAB_SUPPORT, если да — убрать их.(ОСТОРОЖНО! Быть готовым вернуть всё в исходное состояние)

2) Если после этого SUCCESS_EXEC также N, то необходимо перейти в папку /bitrix/managed_cache/ и попытаться удалить содержимое обязательно через модуль управления структурой, а не через FTP. Если ошибка — исправить проблему с доступом продукта к папкам. Результатом должно быть удаление файлов и папок из кеша через модуль управления структурой. 

3) если после виполения команды CEvent::CheckEvents(); в командной строке несколько писем с N меняют статус отправки на другой нужно добавлять и проверять cron-задачу или переключить отправку писем на хиты.

 4) Поставить cron-задачу(проверить есть ли она вобще) или перенести отправку на хиты.
 5) Код в init.php, некорректно работающий на cron. Проверьте там редиректы и пустые данные в  переменной $_SERVER.

Если там стоит ‘F’(функция mail() по какой-то причине вернула False) 

1)Может почтовый сервер не поддерживает формат письма.
Убрать BBC(добиваемся чтоб оно работало, но попробовать отключить можно)
Убрать дублирование email в заголовке
Установить Конвертировать 8-битные заголовки

  2)Может быть это проблемы на стороне почтовой утилиты на сервере.
Если почта была настроена, но вдруг перестала отпарвляться, ошибку нужно искать в логах почтовой утилиты. В стандартном виртуальном окружении Битрикса это /home/bitrix/msmtp_default.log
проверьте также права на 
 /home/bitrix/.msmtprc
возможно прав для пользователя bitrix (если стантартное виртуальное окружение) не достаточно на прочтение. Поменяйте владельца на bitrix:bitrix

  3) Если писем отправляется очень много.

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

4) В почтовом шаблоне письма есть заглушка #NAME#, а ключа с таким именем нет в массиве полей в b_event.

e-mail отправителя или получателя имеет неправильный формат;

— заглушека #NAME# не может подставиться;

— какой-то из необходимых заголовков не задан в почтовом шаблоне в административной части сайта;

— в почтовом клиенте неверно настроено соответствие заголовков;

— отправитель письма не соответствует тому, что ожидает почтовый сервер.

— Битрикс заполняет заглушку #BCC# в полях Кому и Копии только в письмах, отправляемые модулем Интернет-магазин (например создание заказа).Если вы добавите #BCC# в Кому или Копию в шаблон регистрации пользователя или в свой кастомный, или любой другой шаблон без приставки SALE — письмо не отправится и будет иметь статус отправки F.

5) Обработчики событий отправки писем сработали неверно.
6) Обратите внимание на функцию custom_mail. Если она определена значит заменяет стандартную mail. Даже если она отработала корректно (отослались письма) статус может быть F или 0. Проверьте тариф используемого SMTP, проверьте логины, пароли а также адрес отправителя. Обычно используют класс PhpMailer. Включите дебаг, посмотрите ошибки.
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

$from = 'адрес отправителя';
$mail = new PHPMailer(true);
$mail->SMTPDebug = 1; // включаем дебаг
$mail->isSMTP(); // включаем SMTP
$mail->Host = ''; // SMTP сервер
$mail->SMTPAuth = true; // включаем авторизацию
$mail->Username = $from; // SMTP логин
$mail->Password = ''; // SMTP пароль
$mail->SMTPSecure = 'ssl'; // включаем шифрование
$mail->Port = 465; // используемый TCP порт

//Recipients
$mail->setFrom($from, 'Арт-Деко'); //от кого
$mail->addAddress(''); //кому
// Content
$mail->CharSet = "UTF-8"; //кодировка
$mail->isHTML(true); // формат письма HTML
$mail->Subject = '=test=';
$mail->Body = '=test body=';
$mail->send();
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/mail_log.log',serialize($mail->ErrorInfo).PHP_EOL,FILE_APPEND);

Если стоит NULL 
API работает только с записями, у которых значение «N», попробуем исправить сам столбец таблицы.
Административный раздел->Рабочий стол->Настройки->Инструменты->SQL запрос пишем

  alter table b_event modify SUCCESS_EXEC char(1) not null default 'N';

 
Если стоит «0»
1) Неправильно настроен шаблон сообщения. 
Посмотрите правильность зополнения полей. Мало ли.
2) В почтовом шаблоне снята галочка активности или нет привязки к нужному сайту.
3) Обработчики событий отправки писем сработали неверно.

Если ничего не помогло, просите у хостера логи почтового сервера.
По возможности проверить размер таблицы b_event (через phpmyadmin к примеру).
Если дешевый тариф то посмотреть использование памяти сервером.
Возможно у хостера стоит ограничение на вес письма.

Если письмо отправилось, но вы его не видите не забудьте перепроверить спам фильтр на почте, на которую отправляли.

Здравствуйте.
На VPS развернут Bitrix VM по инструкции

https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=37&LESSON_ID=6489&LESSON_PATH=3908.6488.6489

Так же перенесена копия сайта. Сайт работает. Однако, проблема с почтой.
Важна только отправка почты, неважно через какой сервер, поэтому предполагается использование msmtp
Все настройки сделаны как тут

https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=37&LESSON_ID=6689

а именно:
1) файл /home/bitrix/.msmtprc создан и настроен на отправку писем чере yandex.ru (грубо говоря, все настройки этого файла взяты со старого сервера, где почта работала)
2) символическая ссылка с /home/bitrix/.msmtprc на /etc/msmtprc тоже прописана.

Для проверки ошибок выполняю функцию (тоже из инструкции)
echo -e «test message» | /usr/bin/msmtp —debug -t -i _тут_любой_почтовый_адрес_

Письмо приходит (пусть и в спам, но это пока не важно). И лог msmtp пишется.

Однако, когда на сайте, в командной строке php набираю:

if(mail(«_тут_адрес_», «test», «test»)){
  echo «true»;
}else{
  echo «false»;
}

возвращает false. И письма нет, и лог msmtp НЕ пишется
Понимаю, что что-то где-то не донастроено для функции mail(). Только  вопрос что и где?


Обновлено: 23 апреля 2021


8324 просмотра

Если используется msmtp (установлен BitrixVM) и выводятся ошибки вида

<-- 550 5.7.0 Sender or From header address rejected: not owned by authorized user

Скорее всего bitrix отправляет письма, указывая отправителя в заголовке From, но msmtp их не может читать.
В таком случае можно использовать параметр —read-envelope-from.

Однако, в том же тесте системы, заголовок From не передается, как и в некоторых других ситуациях, тогда Битрикс не отправляет письма и выводит ошибки:

envelope from address extracted from mail: (null)
loaded system configuration file /etc/msmtprc
loaded user configuration file /home/bitrix/.msmtprc
falling back to default account
msmtp: account default from /home/bitrix/.msmtprc: envelope-from address is missing

Нашлось простое решение — скрипт, который смотрит, есть ли заголовок письма, если да, то запускает msmtp с параметром —read-envelope-from, иначе запускается стандартно.

Что бы избавиться от ошибки «not owned by authorized user» — создаем скрипт /usr/bin/bitrix_email.sh с содержимым:

#!/bin/bash
export HOME=/home/bitrix


[email protected]


message_body=""
while read line; do
  message_body="$message_body$linen"
done < /dev/stdin


if [[ $message_body == *"From:"* ]]; then
echo -e "$message_body" | /usr/bin/msmtp --debug -t -i --read-envelope-from $args
else
echo -e "$message_body" | /usr/bin/msmtp --debug -t -i $args
fi

Делаем скрипт запускаемым

chmod +x /usr/bin/bitrix_email.sh

Далее прописываем этот скрипт в /etc/php.d/bitrixenv.ini , если у вас bitrixVM или в ином в вашем случае

sendmail_path = /usr/bin/bitrix_email.sh

Перезапускаем php-fpm или httpd

service httpd restart

Всё, теперь при отправке почты отправитель будет браться из заголовков письма From:, если задан такой заголовок, иначе как раньше.

Буду рад, если эта статья поможет избавиться от ситуации, в которой Битрикс не отправляет письма.

Прежде чем приступить

Подключаемся к серверу по SSH и попадаем в меню Bitrix-окружения. Для начала нужно выйти из меню, набрав 0 для выхода.

Если в системе ранее был установлен sendmail, тогда его необходимо удалить:

# rpm -e --nodeps sendmail

Установка Postfix

# yum install postfix

Добавим postfix в автозагрузку

# chkconfig postfix on

Запустите postfix:

systemctl start postfix

теперь необходимо войти в консольное меню VMBitrix,
# /root/menu.sh


 

Выбираем п.6 и затем п. 4

6. Manage sites in the pool

4. Change email settings on site


Первым делом набираем название сайта из списка в консоли выше, к которому создаем файл настроек для отправки почты, к примеру baks.dev. В консоли появяться последовательно вопросы и в круглых скобках подсказки в кним с значениями по умолчанию. Если оставить поле не заполненым и нажать Enter, то в файл настроек запишуться те самые данные по умолчанию. Так как мы настраиваем отправку почты с помощью почтового сервера Postfix, то принимаем все занчения по умолчанию.
 

Enter site name (default) or 0 to exit: baks.dev

Затем потребует заполнит email, который будет использоваться по умолчанию, например noreply@baks.dev
 

Enter From email address (ex. bob@example.org):  noreply@baks.dev

Указываем локальный адрес сервера 127.0.0.1 и порт 25, либо просто жмем Enter на двух следующих пунктах
 

Enter server address or DNS (127.0.0.1):
Enter server port (25):

Разрешаем отправку почты без авторизации, заполнив N и жмем Enter

 Do you want to use SMTP authentication on 127.0.0.1:25? (N|y): N


также отключаем TLS , заполнив n и жмем Enter
 

 Do you want to enable TLS for 127.0.0.1:25 (n|Y):n

Если ошибок не выявлено, тогда вы должны получить уведомление

Configure email for the site baks.dev
 

В результате будет создан файл /home/bitrix/.msmtprc, в котором будут указаны внесённые настройки:
 


# smtp account configuration for baks.dev
account white-sign.ru
logfile /home/bitrix/msmtp_baks.dev.log
host 127.0.0.1
port 25
from noreply@baks.dev
aliases /etc/aliases
keepbcc off
auth off

Перезапустим Postfix

systemctl restart postfix

На этом мы завершили настройку сервера отправки почты.
Проверьте работу спомощью командной стрки: переходим в панели администрирования в Настройки — Инструменты — Командная PHP-строка, втсавляем код и выполняем


if (mail("you_mail@gmail.com", "test subject", "test body" ,"From: test@bitrix.ru"))
echo "Сообщение передано функции mail, проверьте почту в ящике.";
else
echo "Функция mail не работает, свяжитесь с администрацией хостинга."

Если отправка не работает, и письма не приходят на почту?

1. Проверьте, пожалуйста, настройки почтового события заполнения формы и его шаблона.

Откройте Панель управления — Настройки — Настройки продукта — Почтовые события; выберите событие.

На первой закладке, должны стоять галочки возле используемых на Вашем сайте кодов языка. На закладке «шаблоны» должна стоять галочка возле имени Вашего сайта, хотя бы у одного шаблона (обычно он там как раз один). Также, в настройках выбранного почтового шаблона (можно перейти прямо по ссылке со страницы «шаблоны», не забудьте только перед этим нажать «применить», если были сделаны какие-то настройки), должна стоять галочка «активен», и также должен быть выбран Ваш сайт. Также должны быть корректно заполнены поля «от кого» и «кому» (значения по-умолчанию #DEFAULT_EMAIL_FROM# и #EMAIL#, соответственно).

2. Если все эти настройки соответствуют истине, то в настройках модуля веб-формы отключите флаг «использовать упрощенный режим», перейдите в настройки соответсвующей формы, вкладка дополнительно, убедитесь, что флаг привязки к почтовому шаблону проставлен. Если и здесь все в порядке, то перейдите, пожалуйста, в Настройки-Инструменты-SQL-запрос и выполните такой запрос:

 select * from b_event where event_name like '%form%' order by date_insert desc

Найдите событие заполнения формы, смотрите в поле SUCCESS_EXEC:

стоит Y — письмо из продукта ушло, дальнейшую его судьбу попросите отследить администратора хостинга
стоит N — зайдите в файл /bitrix/php_interface/dbconn.php и проверьте не определены ли у Вас константы 
BX_CRONTAB и BX_CRONTAB_SUPPORT, если да — убрать их определение вообще из этого файла. Если после этого SUCCESS_EXEC также N, то необходимо перейти в папку /bitrix/managed_cache/ и попытаться удалить содержимое (обязательно через модуль управления структурой, а не через FTP), если получите ошибку — значит необходимо исправить проблему с доступом продукта к папкам, чтобы Вы могли удалить файлы и папки из кеша.
стоит F — функция mail() по какой-то причине вернула False при отправке. Наиболее типичные проблемы: 1. Не настроена функция mail() на хостинге. Решается с хостером.

3. Почтовый сервер не поддерживает формат письма. Пробовать изменять настройки отправки, убирать поле ВСС, убирать галочку «Дублировать email адрес в заголовке», ставить «Конвертировать 8-битные заголовки». Не помогает — запросить логи у администратора почтового сервера, чтобы посмотреть, в чем конкретно ошибка при отправке.

Стоит 0 (ноль) — значит, что-то неверно в настройках из пп.1-2 — проверьте еще раз.

Приветствую читателей thisis-blog.ru!

В сегодняшней статье хочу рассказать об основных проблемах с почтой в CMS 1с-Битрикс.
Порой до адресата не доходят письма и нужно понять, а отправляются ли они вообще? А может они были отправлены, но возникли, какие-то другие ошибки. Так что же делать в таких ситуациях?

Проверить отправляются ли письма

Для проверки достаточно на любой страничке написать следующий php код:

$mail="[email protected]"; // ваша почта
$subject ="Test" ; // тема письма
$text= "Line 1nLine 2nLine 3"; // текст письма
if( mail($mail, $subject, $text) )
{
echo 'Успешно отправлено!'; }
else{
echo 'Отправка не удалась!';
}

Либо использовать для отправки письма функцию bitrix CEvent::Send.

Если письмо не пришло, можно обращаться в тех. поддержку хостера.

Список отправленных писем

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

Для этого нужно зайти в Админку Битрикс, далее Настройки -> Инструменты -> SQL-запрос. Ввести следующий sql код:

select * from b_event
where event_name like '%form%'
order by date_insert desc

Вместо %form% нужно указать конкретный тип почтового события например так, чтобы посмотреть отправленные письма о новых заказах:

select * from b_event
where event_name like 'SALE_NEW_ORDER'
order by date_insert desc

Либо можете вообще убрать вторую строку. В результате получите таблицу всех сработавших событий. Нас интересует колонка SUCCESS_EXEC.
‘Y’ — означает успешная отправка;
‘N’ или 0 — письмо не отправлено;
‘F’ — ошибка
Если найденные записи имеют значение ‘Y’ — это означает, что они отправлены и проблем быть не должно.
Но у нас всё плохо, значит обращаемся в тех. поддержку хостинга.

Если ‘N’ или 0- письма по какой-то причине не ушли.
Может помочь такое решение:
перейдите по пути: <вашсайт>/bitrix/php_interface/dbconn.php

Закомментируйте или удалите следующие строки:

define('BX_CRONTAB', true);
define('BX_CRONTAB_SUPPORT', true);

Попробуйте протестировать снова. Если после этого SUCCESS_EXEC также имеет значение ‘N’, то перейдите в  <вашсайт>/bitrix/managed_cache/ . Удалите содержимое через модуль управления структурой( не в коем случае не используйте FTP). Если вылезет ошибка, то не хватает доступа. Измените доступ к папкам и повторите снова.

Еще один способ — воспользоваться встроенными методами CMS Битрикс по диагностике.

  • Проверка системы — <вашсайт>/bitrix/admin/site_checker.php
  • Монитор качества — <вашсайт>/bitrix/admin/checklist.php

Ошибки, найденные в процессе диагностики, могут являються причиной вашей проблемы.

Возможная ошибка — почтовый сервер не поддерживает формат письма. Попробуйте изменить настройки отправки.

  • Убрать BBC
  • Убрать дублирование email в заголовке
  • Установить Конвертировать 8-битные заголовки

Если ничего не помогло, попробуйте запросить у хостера логи почтового сервера.

Хочу рассмотреть частный случай:

 Не приходят на почту уведомления о заполнении веб-форм

Шаги решения проблемы:

  1. Переходим в админ панель: Настройки -> Настройки продукта ->Настройки модулей  -> Веб-формы. Отключаем флажок «использовать упрощенный режим». Переходим к настройкам компонента веб-форм на сайте. Вкладка дополнительно. Должен присутствовать флажок активирующий привязку к почтовому шаблону.
  2. Переходим: Панель управления -> Настройки -> Настройки продукта -> Почтовые события. Находим почтовый шаблон для веб-формы. Проверяем правильность данных:
  • Шаблон должен быть активен;
  • Привязан к одному из сайтов(если многосайтовость);
  • От кого: #DEFAULT_EMAIL_FROM#;
  • Кому: #DEFAULT_EMAIL_FROM#».

Спасибо за внимание, также читайте статью про то, как Добавить поле в почтовый шаблон.

При установке чистого шаблона виртуальной машины Bitrix в набор предустановленного ПО не входит почтовый сервер. Это политика компании 1C Битрикс, а не хостинг-провайдера.

Чтобы настроить почту на сервер Bitrix, воспользуйтесь следующей инструкцией.

Мы рекомендуем сделать это через стороннее SMTP. Для этого ваш домен должен быть делегирован на Яндекс ПДД, Почту для домена Mail.ru или аналогичные сервисы.

1. Подключаемся к серверу по SSH и попадаем в меню Bitrix-окружения:

2. Переходим в пункты:

>> 6.Manage sites in the pool

>> 4. Change email settings on site

Далее последовательно появятся вопросы (подсказки в скобках):

Enter From email address (ex. bob@example.org)

— ваша почта.

Enter server address or DNS (127.0.0.1):

— адрес почтового сервера. Для Яндекс — smtp.yandex.ru

3. Указание порта, способа авторизации и шифрования:

Enter server port (25): 587

Do you want to use SMTP authentication on smtp.yandex.ru:587? (N|y) Y

Do you want to enable TLS for smtp.yandex.ru: 587 (n|Y)

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

В результате будет создан файл /etc/msmtprc, в котором будут указаны внесённые настройки:

account default
logfile /home/bitrix/msmtp_default.log
host smtp.yandex.ru
port 587
from bitrix@yoursite.ru
keepbcc off
auth on
user bitrix@yoursite.ru
password YourPAssWord

tls on 
tls_certcheck off

После этого почта на сайте начнёт работать.

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

1. Устанавливаем postfix:

yum install postfix && service postfix start

2. Через меню Битрикс вносим настройки:

host 127.0.0.1
port 25
from bitrix@yoursite.ru
keepbcc off
auth off

3. Cоздаем файл лога и выставляем на него права:

touch /home/bitrix/msmtp_default.log
chown bitrix:bitrix /home/bitrix/msmtp_default.log

Пример письма, отправленного без ошибок:

Apr 28 16:06:53 host=127.0.0.1 tls=off auth=off from=bitrix@yoursite.ru 

recipients=f1rst-test@ya.ru mailsize=902 smtpstatus=250 smtpmsg='250 2.0.0 Ok: queued as 8DF4F11E1AE9' exitcode=EX_OK

Вносить изменения в настройки можно непосредственно в файл либо повторно пройти настройки через меню Битрикс.

Этот материал был полезен?

В сегодняшней статье хочу рассказать об основных проблемах с почтой в CMS 1с-Битрикс.
Порой до адресата не доходят письма и нужно понять, а отправляются ли они вообще? А может они были отправлены, но возникли, какие-то другие ошибки. Так что же делать в таких ситуациях?

ПРОВЕРИТЬ ОТПРАВЛЯЮТСЯ ЛИ ПИСЬМА

Для проверки достаточно на любой страничке написать следующий php код:


$mail="my@mail.ru"; // ваша почта $subject ="Test" ; // тема письма $text= "Line 1nLine 2nLine 3"; // текст письма if( mail($mail, $subject, $text) ) { echo 'Успешно отправлено!'; } else{ echo 'Отправка не удалась!'; }

Либо использовать для отправки письма функцию bitrix CEvent::Send. Если письмо не пришло, можно обращаться в тех. поддержку хостера.

СПИСОК ОТПРАВЛЕННЫХ ПИСЕМ

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

Для этого нужно зайти в Админку Битрикс, далее Настройки -> Инструменты -> SQL-запрос. Ввести следующий sql код:

select * from b_event
where event_name like '%form%'
order by date_insert desc

Вместо %form% нужно указать конкретный тип почтового события например так, чтобы посмотреть отправленные письма о новых заказах:

select * from b_event
where event_name like 'SALE_NEW_ORDER'
order by date_insert desc

Либо можете вообще убрать вторую строку. В результате получите таблицу всех сработавших событий. Нас интересует колонка SUCCESS_EXEC.
‘Y’ — означает успешная отправка;
‘N’ или 0 — письмо не отправлено;
‘F’ — ошибка
Если найденные записи имеют значение ‘Y’ — это означает, что они отправлены и проблем быть не должно.
Но у нас всё плохо, значит обращаемся в тех. поддержку хостинга.

Если ‘N’ или 0- письма по какой-то причине не ушли.
Может помочь такое решение:
перейдите по пути: <вашсайт>/bitrix/php_interface/dbconn.php

Закомментируйте или удалите следующие строки:

define('BX_CRONTAB', true);
define('BX_CRONTAB_SUPPORT', true);

Попробуйте протестировать снова. Если после этого SUCCESS_EXEC также имеет значение ‘N’, то перейдите в  <вашсайт>/bitrix/managed_cache/ . Удалите содержимое через модуль управления структурой( не в коем случае не используйте FTP). Если вылезет ошибка, то не хватает доступа. Измените доступ к папкам и повторите снова.

Еще один способ — воспользоваться встроенными методами CMS Битрикс по диагностике.

  • Проверка системы — <вашсайт>/bitrix/admin/site_checker.php
  • Монитор качества — <вашсайт>/bitrix/admin/checklist.php

Ошибки, найденные в процессе диагностики, могут являються причиной вашей проблемы.

Возможная ошибка — почтовый сервер не поддерживает формат письма. Попробуйте изменить настройки отправки.

  • Убрать BBC
  • Убрать дублирование email в заголовке
  • Установить Конвертировать 8-битные заголовки

Если ничего не помогло, попробуйте запросить у хостера логи почтового сервера.

Хочу рассмотреть частный случай:

 НЕ ПРИХОДЯТ НА ПОЧТУ УВЕДОМЛЕНИЯ О ЗАПОЛНЕНИИ ВЕБ-ФОРМ

Шаги решения проблемы:

  1. Переходим в админ панель: Настройки -> Настройки продукта ->Настройки модулей  -> Веб-формы. Отключаем флажок «использовать упрощенный режим». Переходим к настройкам компонента веб-форм на сайте. Вкладка дополнительно. Должен присутствовать флажок активирующий привязку к почтовому шаблону.
  2. Переходим: Панель управления -> Настройки -> Настройки продукта -> Почтовые события. Находим почтовый шаблон для веб-формы. Проверяем правильность данных:
  • Шаблон должен быть активен;
  • Привязан к одному из сайтов(если многосайтовость);
  • От кого: #DEFAULT_EMAIL_FROM#;
  • Кому: #DEFAULT_EMAIL_FROM#».


Битрикс не отправляется почта или попадает в спам

Заказать сайт

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

Тестируем отправку писем

Отправка тестового письма из консоли

echo "Test text" | mail -s "Test title" test@test.ru

Проверяем работу функции mail из PHP консоли Битрикс

if( mail("test@test.ru", "Subject", "Text") ){
	echo 'Успешно отправлено!'; }
else{
	echo 'Отправка не удалась!';
}

Проверяем работу сокетов

$fp = fsockopen("ssl://smtp.mail.ru", 465, $errno, $errstr, 30);
if (!$fp) 
	echo "Error: $errstr ($errno)n";
else
	echo "Connected";
fclose ($fp)

Проверяем настройки Битрикс

Идем в Настройки > Настройки продукта > Почтовые и СМС события > Почтовые шаблоны и просматриваем шаблоны. Убеждаемся, что в поле От кого стоит #DEFAULT_EMAIL_FROM#

Идем в Настройки > Настройки продукта > Настройки модулей > Главный модуль > Почта и СМС в поле Email администратора сайта (отправитель по умолчанию) вписываем правильное значение почта отправителя

На всякий случай почту можно указать еще в поле E-Mail отдела продаж: по пути Настройки > Настройки продукта > Настройки модулей > Интернет-магазин > Настройки

Email должен совпадать во всех перечисленных случаях, плюс в настройках msmtp должен быть указан именно он

msmtp config для простой отправки через mail.ru

account default
logfile /home/bitrix/.msmtp.log
host mail.bitrixsoft.com
port 25
from user@email.com
auth off

msmtp config для простой отправки через smtp mail.ru

account default
logfile /home/bitrix/msmtp_default.log
host smtp.mail.ru
port 587
from no-reply@default.ru
keepbcc off
auth on
user no-reply@default.ru
password default
tls on
tls_starttls on
tls_certcheck off

msmtp config для простой отправки через smtp yandex.ru

account default
logfile /var/log/msmtp.log
host smtp.yandex.ru
port 587
from usr@yandex.ru
keepbcc on
auth on
user usr@yandex.ru
password PAss
tls on
tls_starttls on

msmtp config для простой отправки через smtp gmail.com

account default
tls on
tls_certcheck off
auth on
host smtp.gmail.com
port 587
user YOUR_EMAIL
from YOUR_EMAIL
password YOUR_PASSWORD

msmtp config для простой отправки через smtp timeweb.ru

# smtp account configuration for default
account default
logfile /home/bitrix/msmtp_default.log
host smtp.timeweb.ru
port 465
from YOUR_EMAIL
aliases /etc/aliases
keepbcc off
auth on
user YOUR_EMAIL
password YOUR_PASSWORD

tls on
tls_starttls off
tls_certcheck off

Получаем список писем

select * from b_event
where event_name like 'SALE_NEW_ORDER'
order by date_insert desc

Значения статусов отправки писем в колонке SUCCESS_EXEC

‘Y’ — означает успешная отправка;
‘N’ или 0 — письмо не отправлено;
‘F’ — ошибка

Скрипт отправки почты через phpMailer

Устанавливаем composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Устанавливаем phpMailer

composer require phpmailer/phpmailer

Если команда composer не найдена, то пытаемся установиться его глобально

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Добавляем в init.php

require '/var/www/YOUR_SITE/vendor/autoload.php';

use BitrixMainApplication;
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerSMTP;
use PHPMailerPHPMailerException;

//Перехват генерации почтового события с возможностью его отмены
AddEventHandler("main", "OnBeforeEventAdd", array("OnBeforeEventAddClass", "OnBeforeEventAddHandler"));
class OnBeforeEventAddClass
{
    function OnBeforeEventAddHandler(&$event, &$lid, &$arFields, &$message_id, &$files)
    {
        $connection = BitrixMainApplication::getConnection('default');//Получаем соединение с БД

        //Получаем шаблон письма
        $recordset = $connection->query("select SUBJECT, MESSAGE, MESSAGE_PHP from b_event_message where ACTIVE = 'Y' AND EVENT_NAME = '".$event."'")->fetchAll();
        $fields = $arFields;

        AddMessage2Log($arFields, "arFields");

        if(isset($recordset[0]['MESSAGE'])){//Проверяем есть ли шаблон
            $mask = $recordset[0]['MESSAGE'];
            $subject = $recordset[0]['SUBJECT'];

            foreach ($fields as $key => $value){
                if(!is_array($value) && strpos($key, '~') === false){//Исключаем из замены массивы и символы ~
                    //Заменяем все возможные паттерны
                    $mask = preg_replace('~#'.$key.'#~', $value, $mask);
                    $subject = preg_replace('~#'.$key.'#~', $value, $subject);
                }
            }

            $mask = preg_replace('~#SITE_NAME#~', COption::GetOptionString("main", "site_name", $GLOBALS["SERVER_NAME"]), $mask);
            $mask = preg_replace('~#SERVER_NAME#~', COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]), $mask);
            $mask = preg_replace('~#DEFAULT_EMAIL_FROM#~', COption::GetOptionString("main", "email_from", "admin@".$GLOBALS["SERVER_NAME"]), $mask);

            $subject = preg_replace('~#SITE_NAME#~', COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]), $subject);
            $subject = preg_replace('~#SERVER_NAME#~', COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]), $subject);


            if($mask) {//Ести тело сформировано, то запускаем отправку
                if(isset($fields['RS_USER_EMAIL'])){
                    if (filter_var($fields['RS_USER_EMAIL'], FILTER_VALIDATE_EMAIL)) {
                        $email = $fields['RS_USER_EMAIL'];
                    }
                }

                if(isset($fields['EMAIL'])){
                    if (filter_var($fields['EMAIL'], FILTER_VALIDATE_EMAIL)) {
                        $email = $fields['EMAIL'];
                    }
                }

                if(isset($fields['EMAIL_RAW'])){
                    if (filter_var($fields['EMAIL_RAW'], FILTER_VALIDATE_EMAIL)) {
                        $email = $fields['EMAIL_RAW'];
                    }
                }

                if(isset($fields['EMAIL_BUYER'])){
                    if (filter_var($fields['EMAIL_BUYER'], FILTER_VALIDATE_EMAIL)) {
                        $email = $fields['EMAIL_BUYER'];
                    }
                }

                if(isset($fields['EMAIL_TO'])){
                    if (filter_var($fields['EMAIL_TO'], FILTER_VALIDATE_EMAIL)) {
                        $email = $fields['EMAIL_TO'];
                    }
                }


                if(!$email){
                    $email = 'default@email.ru';
                }

                if($email && filter_var($email, FILTER_VALIDATE_EMAIL)){
                    $cl = new OnBeforeEventAddClass;
                    if($cl->custom_mail($email, $subject, $mask,'','')){//Отправляем письмо
                        //AddMessage2Log($event, "Сообщение было отправлено");
                    }else{
                        //AddMessage2Log($event, "Ошибка. Сообщение отправлено не было");
                    }
                }else{
                    //AddMessage2Log($event, "Ошибка. Почта не найдена. Почта:");
                }

                return false;

            }else{
                //AddMessage2Log($event, "Ошибка. Нет тела письма");
            }
        }else{
            //AddMessage2Log($event, "Ошибка. Не найден шаблон письма");
        }

    }

    public function custom_mail($to, $subject, $message, $additionalHeaders = '', $additional_parameters)
    {
        // Instantiation and passing `true` enables exceptions
        $mail = new PHPMailer(true);

        $mail->IsSMTP(true); // enable SMTP
        $mail->SMTPDebug = 3;  // debugging: 1 = errors and messages, 2 = messages only
        $mail->SMTPAuth = true;  // authentication enabled
        $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
        $mail->Host = 'smtp.gmail.com';
        $mail->Port = 465;               // set the SMTP port for the GMAIL server

        $mail->Username = 'email'; // SMTP username
        $mail->Password = 'password'; // SMTP password

        $mail->CharSet = 'UTF-8';

        $mail->addAddress($to);
        $mail->setFrom('default@email.ru');

        //Set the subject line
        $mail->Subject = $subject;

        //Read an HTML message body from an external file, convert referenced images to embedded,
        //convert HTML into a basic plain-text alternative body
        $mail->msgHTML($message);

        //Replace the plain text body with one created manually
        $mail->AltBody = 'This is a plain-text message body';

        $d_message='';
        //preg_match('/From: (.+)n/i', $additionalHeaders, $matches);
        //list(, $from) = $matches;
        $from = 'admin@YOUR_SITE';
        $d_message.='$from - '.$from.' +++ '; $d_message.='$to - '.$to.' +++ ';
        $d_message.='$subject - '.$subject.' +++ ';
        $d_message.='$message - '.$message.' +++ ';
        $mail->setFrom($from);
        $mail->addAddress($to, ''); // Add a recipient

        //$mail->addReplyTo($from, '');
        //$mail->AddBCC($from);
        //$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
        //$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name

        $mail->Subject = $subject;

        if($message != strip_tags($message)) {
            $mail->isHTML(true);
        }

        $mail->Body = $message;
        // $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

        if(!$mail->send()) {
            AddMessage2Log($mail->ErrorInfo, "Mailer Error");
            return false;
        } else {
            return true;
        }
    }
}


//Перехват письма непосредственно перед отправкой
AddEventHandler('main', 'OnBeforeEventSend', Array("OnBeforeEventSendClass", "my_OnBeforeEventSend"));
class OnBeforeEventSendClass
{
    function my_OnBeforeEventSend($arFields, $arTemplate)
    {

        //получим сообщение

    }
}

Для отправки писем с помощью phpMailer через smtp.mail.ru конфиг должен быть следующего вида:

$mail = new PHPMailerPHPMailerPHPMailer(true);

$mail->IsSMTP(true); // enable SMTP
$mail->SMTPDebug = 1;  // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true;  // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = 'ssl://smtp.mail.ru';
$mail->Port = 465;               // set the SMTP port for the GMAIL server

$mail->Username = 'USER_NAME'; // SMTP username
$mail->Password = 'USER_PASSWORD'; // SMTP password

Отладка через AddMessage2Log

В файле dbconn.php добавьте строчку define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log.txt");

cannot connect to localhost, port 25: Connection refused

После установки чистого битрикс окружения достаточно часто вижу эту ошибку. Чтобы исправить — используйте postfix

yum install postfix
service postfix start
chkconfig postfix on

the server sent an empty reply в логе msmtp

Добавьте в конфиг

tls_starttls off

Борьба с ошибками

Если вы пытаетесь отправить почту через smtp компании Google и получаете ошибку вида SMTP connect() failed, то зайдите в аккаунт гугл с которого отправляете почту. Откройте настройки, перейдите во вкладку Безопасность, найдите пункт «Ненадежные приложения, у которых есть доступ к аккаунту», перейдите в него и разрешите доступ небезопасным приложениям (ссылка)

Боремся с ошибкой Mail command not found

yum install sendmail
yum -y install mailx
service sendmail start

Перевод агентов на крон

Правим файл /bitrix/php_interface/dbconn.php

Иногда требуется закомментировать строки подключения поддержки крона

define('BX_CRONTAB', true);
define('BX_CRONTAB_SUPPORT', true);

Перейдите на страницу Настройки > Инструменты > Командная PHP-строка и исполните следующий код:

COption::SetOptionString("main", "agents_use_crontab", "Y");
echo COption::GetOptionString("main", "agents_use_crontab", "N");

Откроем настройки крон

crontab -u bitrix -e или crontab -e

Добавим запись:

*/1 * * * *  php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php >/dev/null 2>&1

Перезагружаем cron

systemctl restart crond.service

Настройки cron хорошо описаны в документации

Более подробно можно изучить вопрос в официально документации:

  • Настройка почты на VMBitrix
  • Дополнительные настройки и отладка msmtp

Теги:

1С Битриксphp

Без обратной связи сайт словно паралитик: все видит, а сказать ничего не может. Не поступают данные с веб — форм, корпоративные ящики не работают совсем или настраиваются с удивительными ухищрениями. Деньги заплачены, а про-стей-шая, э-ле-мен-тар-ней-шая, важ-ней-шая рабочая задача не решена! Что делать?

 
Проверяем настройки почтового события веб-формы и связанные шаблоны

Давайте перейдем по пути Панель управления -> Настройки -> Настройки продукта -> Почтовые события и выберем событие.

1. На первой вкладке галочки кодов языка включены?

2. На вкладке «Шаблоны» галочка имени сайта включена?

3. Почтовый шаблон активен?

4. Поле «От кого» заполнено верно (по умолчанию #DEFAULT_EMAIL_FROM#) ?

5. Поле «Кому» заполнено верно (по умолчанию #EMAIL#) ?

Все верно? Смотрим дальше. В настройках модуля веб-формы отключите галочку «использовать упрощенный режим». Перейдите в настройки формы на вкладку «дополнительно» и проверьте, включен ли флаг привязки к почтовому шаблону. Готово?

Перейдите по адресу Настройки -> Инструменты -> SQL-запрос и выполните такой запрос:

select * from b_event where event_name like ‘%form%’ order by date_insert desc

Найдя событие выполнения формы, просмотрите поле SUCCESS_EXEC. Если видите «Y», то письмо из продукта ушло, и вам следует отправить запрос в техподдержку хостинга. Если видите «N», то перейдите в файл

/bitrix/php_interface/dbconn.php

и проверьте, определены ли 2 переменные: BX_CRONTAB и BX_CRONTAB_SUPPORT. Если да, то отмените определение.

Повторите SQL-запрос и снова просмотрите поле SUCCESS_EXEC. Если снова видите «N», очистите кэш в папке  /bitrix/managed_cache/ через модуль управления структурой. Ни в коем случае ни через FTP! Если модуль выдаст ошибку, исправьте права доступа к папкам.

Если же значение «F», то функция mail() вернула значение False при отправке. Почему так бывает:

1. Не настроена функция mail() на хостинге. Обратитесь в техподдержку хостера.

2. Почтовый сервер не поддерживает формат письма. Попробуйте изменять настройки отправки, убирать поле ВСС, убирать галочку «Дублировать email адрес в заголовке», ставить «Конвертировать 8-битные заголовки». Если не поможет, запросите у администратора логи почтового сервера.

Наконец, если в поле «0», вернитесь к началу, настройкам почтовых событий, и проверьте заново.

 
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!

Назад в раздел


Обновлено: 23 апреля 2021


8881 просмотр

Если используется msmtp (установлен BitrixVM) и выводятся ошибки вида

<-- 550 5.7.0 Sender or From header address rejected: not owned by authorized user

Скорее всего bitrix отправляет письма, указывая отправителя в заголовке From, но msmtp их не может читать.
В таком случае можно использовать параметр —read-envelope-from.

Однако, в том же тесте системы, заголовок From не передается, как и в некоторых других ситуациях, тогда Битрикс не отправляет письма и выводит ошибки:

envelope from address extracted from mail: (null)
loaded system configuration file /etc/msmtprc
loaded user configuration file /home/bitrix/.msmtprc
falling back to default account
msmtp: account default from /home/bitrix/.msmtprc: envelope-from address is missing

Нашлось простое решение — скрипт, который смотрит, есть ли заголовок письма, если да, то запускает msmtp с параметром —read-envelope-from, иначе запускается стандартно.

Что бы избавиться от ошибки «not owned by authorized user» — создаем скрипт /usr/bin/bitrix_email.sh с содержимым:

#!/bin/bash
export HOME=/home/bitrix


args=$@


message_body=""
while read line; do
  message_body="$message_body$linen"
done < /dev/stdin


if [[ $message_body == *"From:"* ]]; then
echo -e "$message_body" | /usr/bin/msmtp --debug -t -i --read-envelope-from $args
else
echo -e "$message_body" | /usr/bin/msmtp --debug -t -i $args
fi

Делаем скрипт запускаемым

chmod +x /usr/bin/bitrix_email.sh

Далее прописываем этот скрипт в /etc/php.d/bitrixenv.ini , если у вас bitrixVM или в ином в вашем случае

sendmail_path = /usr/bin/bitrix_email.sh

Перезапускаем php-fpm или httpd

service httpd restart

Всё, теперь при отправке почты отправитель будет браться из заголовков письма From:, если задан такой заголовок, иначе как раньше.

Буду рад, если эта статья поможет избавиться от ситуации, в которой Битрикс не отправляет письма.

У меня стоит на виртуальной машине vmbitrix 7. Но так я не догнал почему у меня не отправляется почта.
В php-консоле уже вводил

if(mail("email@example.com", "TEST SUBJECT", "TEST BODY"))
echo "Почтовая система работает!";
else
echo "Неудача, почтовая система не работает, попробуйте еще!";

И выходит «Неудача, почтовая система не работает, попробуйте еще!»
Создал в корне сайта файл .msmtprc и прописал там

account default
logfile /home/bitrix/www/.msmtp.log
host mail.bitrixsoft.com
port 25
from user@email.com
auth off

Но файл .msmtp.log не создался, пришлось вручную создать, но без успешно.
Что мне делать?

Для начала необходимо проверить работу почты сайта под управлением Битрикс.

Битрикс посылает почтовые шаблоны функциями CEvent::Send() и CEvent::SendImmediate().

Письмо отправляется, если Битрикс нашел активный почтовый шаблон, подходящий под это событие и соответствующий текущему сайту.

Письма, отправленные через CEvent::Send(), попадают в таблицу b_event.

Чтобы проверить таблицу, существует 2 способа.

Способ 1

Перейдите на страницу ваш_домен/bitrix/admin/perfmon_tables.php и в поле «Фильтр по имени таблицы» введите b_event, далее перейдите по точному совпадению таблицы.

Фильтр по имени таблицы
Фильтр по имени таблицы

Способ 2

Письма, попавшие в b_event, посылаются на агенте (хиты) или на cron (по расписанию) и отправляются не сразу.

Письма, посылаемые через SendImmediate, не попадают в b_event, а отправляются сразу.

Send и SendImmediate — обертки на функцию Битрикса bxmail, которая использует либо стандартную php-функцию mail, либо custom_mail, если она определена.

В Административном разделе сайта перейдите на страницу по адресу Настройки -> Инструменты -> Командная PHP-строка и скопируйте туда данный код:

if( mail("mail_to@mail.com", "letter test", "my letter text",
"From: mail_from@mail.com
Reply-To: mail_from@mail.com
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: 8bit"
) ){
    echo 'Успешно отправлено!';
}else{
    echo 'Отправка не удалась!';
}

Поля «От кого» (mail_from@mail.com), «Кому» (mail_to@mail.com) поменять на свои.

После этого нажмите на кнопку «ВЫПОЛНИТЬ«.

Командная PHP-строка
Командная PHP-строка

Битриксовская отправка письма — обёртка над функцией mail().

Если в результате выполнения команды появилось сообщение «Отправка не удалась!«, значит функция mail не работает. Свяжитесь с администрацией хостинга.

Далее нужно проверить срабатывает ли штатные события.

На D7:

use BitrixMainMailEvent;
$arFields = array(
    "EVENT_NAME" => "ваше событие",
    "LID" => "код вашего сайта",
    "C_FIELDS" => array(
    "EMAIL"    => "mail_to@mail.com",
    "BCC"    => "mail_to@mail.com",
    "DEFAULT_EMAIL_FROM"    => "mail_from@mail.com",
    ),
    "DUPLICATE"=>"Y",
);
$result=Event::send($arFields);
if($result->GetId()){
    echo 'Успешно отправлено!';
}else{
    echo 'Отправка не удалась!';
}

Проверьте, чтобы поля «DEFAULT_EMAIL_FROM«, «EMAIL«, «EVENT_NAME» были заполнены верно.

Если не поддерживается D7:

$arEventFields = array(
"EMAIL_TO"            => "mail_to@mail.com",
"BCC"                 => "mail_to@mail.com",
"DEFAULT_EMAIL_FROM"    => "mail_from@mail.com",
"ORDER_LIST"    => "состав заказа",
);
$result=CEvent::Send("ваше событие", "код вашего сайта", $arEventFields,'Y');
if(intval($result)){
    echo 'Успешно отправлено!';
}else{
    echo 'Отправка не удалась!';
}

Далее перейдите на страницу по адресу Настройки -> Инструменты -> SQL запрос и введите:

select * from b_event order by id desc

SQL запрос
SQL запрос

Обратите внимание на колонки SUCCESS_EXEC и DUPLICATE. Иногда нужно подождать некоторое время (недолго), пока отработает запись в лог. Первый при установленном значении ‘Y‘ говорит нам, что отправка произошла успешно. Второй, что письмо продублировано на скрытую копию ВСС (например администратору о совершенном заказе).

Что же делать, если значения ‘N‘, а отправка простого mail() выдала ‘Успешно отправлено!’?

Параметр SUCCESS_EXEC сообщает:

  • Y — все письма по всем почтовым шаблонам были успешно отправлены;
  • F — все письма по всем почтовым шаблонам не смогли быть отправлены;
  • P — часть писем отправлена успешно, часть писем — безуспешно;
  • 0 — почтовые шаблоны не были найдены;
  • N — почтовое событие ещё не обрабатывалось функцией CEvent::CheckEvents.

Если там стоит ‘N’

  1. Возможно в настройках продукта включена отправка сообщений по крону. Зайдите в файл /bitrix/php_interface/dbconn.php и проверьте, не определены ли у вас константы BX_CRONTAB и BX_CRONTAB_SUPPORT, если да — убрать их.(ОСТОРОЖНО! Будьте готовы вернуть всё в исходное состояние)
  2. Если после этого SUCCESS_EXEC также N, то необходимо перейти в папку /bitrix/managed_cache/ и попытаться удалить содержимое обязательно через модуль управления структурой, а не через FTP. Если возникла ошибка, исправьте проблему с доступом продукта к папкам. Результатом должно быть удаление файлов и папок из кеша через модуль управления структурой.
  3. Если после выполения команды CEvent::CheckEvents(); в командной строке несколько писем с N меняют статус отправки на другой, нужно добавлять и проверять cron-задачу или переключить отправку писем на хиты.
  4. Поставьте cron-задачу (проверьте, есть ли она вообще) или перенесите отправку на хиты.
  5. Код в init.php, некорректно работающий на cron. Проверьте там редиректы и пустые данные в переменной $_SERVER.

Если там стоит ‘F’ (функция mail() по какой-то причине вернула False)

  1. Может почтовый сервер не поддерживает формат письма. Тогда необходимо:
    • Убрать BBC (лучше добиться, чтоб оно работало, но попробовать отключить можно)
    • Убрать дублирование email в заголовке
    • Установить «Конвертировать 8-битные заголовки»
  2. Может быть это проблемы на стороне почтовой утилиты на сервере. Если почта была настроена, но вдруг перестала отправляться, ошибку нужно искать в логах почтовой утилиты. В стандартном виртуальном окружении Битрикса он находится по адресу /home/bitrix/msmtp_default.log. Проверьте также права на /home/bitrix/.msmtprc. Возможно прав для пользователя bitrix (если стантартное виртуальное окружение) не достаточно на прочтение. Поменяйте владельца на bitrix:bitrix.
  3. Если писем отправляется очень много. В почтовых серверах может стоять ограничение на количество писем в минуту, час или день. Если лимит превышен, письма могут быть не доставлены. Ошибки можно увидеть в логах или узнать у техподдержки почтового сервера. Лечится увеличением пропускного лимита или уменьшением количества отправляемых писем. Например, можно убрать лишних получателей из копий, отключить лишние почтовые шаблоны.
  4. В почтовом шаблоне письма есть заглушка #NAME#, а ключа с таким именем нет в массиве полей в b_event:
    • e-mail отправителя или получателя имеет неправильный формат;
    • заглушека #NAME# не может подставиться;
    • какой-то из необходимых заголовков не задан в почтовом шаблоне в административной части сайта;
    • в почтовом клиенте неверно настроено соответствие заголовков;
    • отправитель письма не соответствует тому, что ожидает почтовый сервер.
  5. Битрикс заполняет заглушку #BCC# в полях Кому и Копии только в письмах, отправляемые модулем Интернет-магазин (например, создание заказа). Если вы добавите #BCC# в Кому или Копию в шаблон регистрации пользователя или в свой кастомный, или любой другой шаблон без приставки SALE — письмо не отправится и будет иметь статус отправки F.
  6. Обработчики событий отправки писем сработали неверно.
  7. Обратите внимание на функцию custom_mail. Если она определена, значит заменяет стандартную mail. Даже если она отработала корректно (отослались письма), статус может быть F или 0. Проверьте тариф используемого SMTP, проверьте логины, пароли, а также адрес отправителя. Обычно используют класс PhpMailer. Включите дебаг и посмотрите ошибки.
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
$from = 'адрес отправителя';
$mail = new PHPMailer(true);
$mail->SMTPDebug = 1;                                       // включаем дебаг
$mail->isSMTP();                                            // включаем SMTP
$mail->Host       = '';  //  SMTP сервер
$mail->SMTPAuth   = true;                                   // включаем авторизацию
$mail->Username   = $from;                     // SMTP логин
$mail->Password   = '';                               // SMTP пароль
$mail->SMTPSecure = 'ssl';                                  // включаем шифрование
$mail->Port       = 465;                                    // используемый TCP порт

//Recipients
$mail->setFrom($from, 'Арт-Деко'); //от кого
$mail->addAddress(''); //кому
// Content
$mail->CharSet = "UTF-8"; //кодировка
$mail->isHTML(true);                                  // формат письма HTML
$mail->Subject = '=test=';
$mail->Body = '=test body=';
$mail->send();
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/mail_log.log',serialize($mail->ErrorInfo).PHP_EOL,FILE_APPEND);

Если стоит NULL

API работает только с записями, у которых значение «N«, поэтому попробуем исправить сам столбец таблицы.

Для этого перейдите на Настройки -> Инструменты -> SQL запрос и введите:

alter table b_event modify SUCCESS_EXEC char(1) not null default 'N';

SQL запрос
SQL запрос

Если стоит «0»

  1. Неправильно настроен шаблон сообщения. Посмотрите правильность зополнения полей. Мало ли.
  2. В почтовом шаблоне снята галочка активности или нет привязки к нужному сайту.
  3. Обработчики событий отправки писем сработали неверно.

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

  • Просите у хостера логи почтового сервера.
  • По возможности проверить размер таблицы b_event (через phpmyadmin к примеру).
  • Если дешевый тариф, то посмотреть использование памяти сервером.
  • Возможно у хостера стоит ограничение на вес письма.

Проверка домена в настройках сайта

Для отправки писем важно, чтобы домен, с которого отправляются письма, был прописан в настройках сайта.

В Административном разделе перейдите на Настройки -> Настройки продукта -> Сайты -> Список сайтов и нажмите на id сайта, с которого идет отправка письма:

Список сайтов
Список сайтов

На странице настроек сайта проверьте поле «Доменное имя«. Если там не указан домен, с которого отправляются письма, то введите его:

Редактирование сайта
Редактирование сайта

Если письмо отправилось, но вы его не видите не забудьте перепроверить спам фильтр на почте, на которую отправляли.

Понравилась статья? Поделить с друзьями:
  • Bitrix включить расширенный вывод ошибок settings php
  • Bitrix включить отображение ошибок
  • Bitrix включить логирование ошибок
  • Bitrix включить лог ошибок
  • Bitrix включен вывод ошибок пользователям