Приветствую читателей thisis-blog.ru!
В сегодняшней статье хочу рассказать об основных проблемах с почтой в 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’, то перейдите по пути: <вашсайт>/bitrix/php_interface/dbconn.php
Закомментируйте или удалите следующие строки:
define('BX_CRONTAB', true); define('BX_CRONTAB_SUPPORT', true);
Попробуйте протестировать снова. Если после этого SUCCESS_EXEC также имеет значение ‘N’, то перейдите в <вашсайт>/bitrix/managed_cache/ . Удалите содержимое через модуль управления структурой( не в коем случае не используйте FTP). Если вылезет ошибка, то не хватает доступа. Измените доступ к папкам и повторите снова.
Возможная ошибка- почтовый сервер не поддерживает формат письма. Попробуйте изменить настройки отправки.
- Убрать BBC
- Убрать дублирование email в заголовке
- Установить Конвертировать 8-битные заголовки
Если ничего не помогло, попробуйте запросить у хостера логи почтового сервера.
Хочу рассмотреть частный случай:
Не приходят на почту уведомления о заполнении веб-форм
Шаги решения проблемы:
- Переходим в админ панель: Настройки -> Настройки продукта ->Настройки модулей -> Веб-формы. Отключаем флажок «использовать упрощенный режим». Переходим к настройкам компонента веб-форм на сайте. Вкладка дополнительно. Должен присутствовать флажок активирующий привязку к почтовому шаблону.
- Переходим: Панель управления -> Настройки -> Настройки продукта -> Почтовые события. Находим почтовый шаблон для веб-формы. Проверяем правильность данных:
- Шаблон должен быть активен;
- Привязан к одному из сайтов(если многосайтовость);
- От кого: #DEFAULT_EMAIL_FROM#;
- Кому: #DEFAULT_EMAIL_FROM#».
Спасибо за внимание, также читайте статью про то, как Добавить поле в почтовый шаблон.
thisis-blog.ru
Цитата |
---|
Wincert пишет: #BCC# — E-Mail скрытой копии |
По идее тут ставите что хотите.
Цитата |
---|
Wincert пишет: #ORDER_LIST# — состав заказа |
Можно примерно так:
Код |
---|
$retStr = ""; $resBasketItems = CSaleBasket::GetList( array("NAME" => "ASC", "ID" => "ASC"), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, &nbs. |
CSaleBasket::UpdatePrice вызывается как колбек функция, если она прописана у элементов. Можно не ломать голову зачем это — это требуется включать при любой обработки корзины.
В $arStrForMail у вас будет список позиций заказа.
Обращаю внимание, что данный цикл надо делать до вызова CSaleBasket::OrderBasket();, потому что потом текущая корзина пользователя опустеет.
Цитата |
---|
Wincert пишет: #SALE_EMAIL# — E-Mail отдела продаж |
COption::GetOptionString("sale", "order_email");
Цитата |
---|
Wincert пишет: #DEFAULT_EMAIL_FROM# — E-Mail адрес по умолчанию (устанавливается в настройках) #SITE_NAME# — Название сайта (устанавливается в настройках) #SERVER_NAME# — URL сервера (устанавливается в настройках) |
Насчет этого не надо греть голову- Битрикс подставит сам.
bx-qa.com
Решение проблемы с отправкой уведомления о заполнении веб-форм
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() на хостинге. Решается с хостером. 2. Почтовый сервер не поддерживает формат письма. Пробовать изменять настройки отправки, убирать поле ВСС, убирать галочку «Дублировать email адрес в заголовке», ставить «Конвертировать 8-битные заголовки». Не помогает — запросить логи у администратора почтового сервера, чтобы посмотреть, в чем конкретно ошибка при отправке.
- Стоит 0 (ноль) — значит, что-то неверно в настройках из пп.1-2 — проверьте еще раз.
skeitol.ru
Без обратной связи сайт словно паралитик: все видит, а сказать ничего не может. Не поступают данные с веб — форм, корпоративные ящики не работают совсем или настраиваются с удивительными ухищрениями. Деньги заплачены, а про-стей-шая, э-ле-мен-тар-ней-шая, важ-ней-шая рабочая задача не решена! Что делать?
Проверяем настройки почтового события веб-формы и связанные шаблоны
Давайте перейдем по пути Панель управления -> Настройки -> Настройки продукта -> Почтовые события и выберем событие.
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», вернитесь к началу, настройкам почтовых событий, и проверьте заново.
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!
Назад в раздел
www.acrit-studio.ru