Приветствую всех.
В битриксе не отправляет письма подтверждения о заказе.
В таблицу b_event записывается статус "F"
Пересмотрел, кажется все что нашел на данном форуме, по аналогичным проблемам но решения пока не нашел.
Ошибка появилась либо после покупки ключа и обновления системы, которая до этого года 2 не обновлялась, либо после смены шаблона сайта. Ставил обратно старый шаблон и старые настройки - все-равно не заработало, так что думаю проблема появилась после обновления. Но больше интересует, не из-за чего, а как решить...
--------------
При этом письма для изменения пароля пользователя отсылаются. Другие события не проверял.
Если создать php-страницу и прописать в ней для теста, что-нибудь вроде:
mail("test@example.com", "My Subject", "Line 1\nLine 2\nLine 3");
то письмо уходит как надо. Как я понимаю, это означает, что функция отправки писем работает.
--------------
Я заметил, когда нажимаешь кнопку оформить заказ. Страница обновляется первый раз - передаются нужные данные для отправки писем и они соответственно должны отправляться и через секунду она обновляется второй раз, выводя информацию, что заказ принят (при данном обновлении к ссылке добавляется ?ORDER_ID=X)
Т. к. починить как, еще не нашел. Решил хотя бы через функцию mail() прописать отправку писем во время первого обновления.
1)Открываю файл components\bitrix\sale.order.ajax\component.php
Нахожу в нем строчки:
Вставляю в него пару строчек кода, для отправки письма (для начала, чисто проверка) и вывод текста, чтобы проверить там ли я функцию mail() вызываю. Получается нечто вроде:
Текст выводится на нужной страничке (после первого обновления), но функция mail() не срабатывает.
2)С component.php ничего не получилось. Восстановил резервную копию данного файла и решил вызвать mail() уже в шаблоне
Редактирую файл confirm.php который отвечает за вывод последней страницы, вставляю в него свою функцию для теста
В итоге во время оформления заказа почта все-равно не отправляется. Зато она отправляется если последнюю страницу где передается ?ORDER_ID=X обновить или перейти на эту страницу, скопировав ее в адресную строку.
----------------------------------
Можно сказать, функция mail() не отправляет письма если она вызывается не на первой странице, а прописана после того, как скрипт куда-нибудь редиректнет.
В битриксе не отправляет письма подтверждения о заказе.
В таблицу b_event записывается статус "F"
Пересмотрел, кажется все что нашел на данном форуме, по аналогичным проблемам но решения пока не нашел.
Ошибка появилась либо после покупки ключа и обновления системы, которая до этого года 2 не обновлялась, либо после смены шаблона сайта. Ставил обратно старый шаблон и старые настройки - все-равно не заработало, так что думаю проблема появилась после обновления. Но больше интересует, не из-за чего, а как решить...
--------------
При этом письма для изменения пароля пользователя отсылаются. Другие события не проверял.
Если создать php-страницу и прописать в ней для теста, что-нибудь вроде:
mail("test@example.com", "My Subject", "Line 1\nLine 2\nLine 3");
то письмо уходит как надо. Как я понимаю, это означает, что функция отправки писем работает.
--------------
Я заметил, когда нажимаешь кнопку оформить заказ. Страница обновляется первый раз - передаются нужные данные для отправки писем и они соответственно должны отправляться и через секунду она обновляется второй раз, выводя информацию, что заказ принят (при данном обновлении к ссылке добавляется ?ORDER_ID=X)
Т. к. починить как, еще не нашел. Решил хотя бы через функцию mail() прописать отправку писем во время первого обновления.
1)Открываю файл components\bitrix\sale.order.ajax\component.php
Нахожу в нем строчки:
Код |
---|
// mail message if (empty($arResult["ERROR"])) { $strOrderList = ""; ... |
Код |
---|
// mail message if (empty($arResult["ERROR"])) { echo "тест"; mail("test@example.com", "My Subject", "Line 1\nLine 2\nLine 3"); $strOrderList = ""; ... |
2)С component.php ничего не получилось. Восстановил резервную копию данного файла и решил вызвать mail() уже в шаблоне
Редактирую файл confirm.php который отвечает за вывод последней страницы, вставляю в него свою функцию для теста
Код |
---|
mail("test@example.com", "My Subject", "Line 1\nLine 2\nLine 3"); |
----------------------------------
Можно сказать, функция mail() не отправляет письма если она вызывается не на первой странице, а прописана после того, как скрипт куда-нибудь редиректнет.