Письмо с заявкой приходит пустым - разбор причин
Заявка сохранилась, письмо пришло, а внутри вместо значений пустые строки или имена полей. Разбираем причины по убыванию частоты, начиная с самого события.
С чего начать
Смотрим, с какими данными создано почтовое событие:
$rs = \CEvent::GetList('ID', 'DESC', ['EVENT_NAME' => 'VENDOR_FEEDBACK']);$row = $rs->Fetch();print_r(unserialize($row['C_FIELDS'], ['allowed_classes' => false]));// здесь видно все поля события ровно в том виде, в каком их получил шаблонМассив полей события отвечает на главный вопрос сразу. Пустые значения в нём означают, что данные не дошли до отправки, а заполненные переводят разбор к шаблону письма.
Сверяем коды подстановок с шаблоном:
$msg = \Bitrix\Main\Mail\Internal\EventMessageTable::getRow(['filter' => [ '=EVENT_NAME' => 'VENDOR_FEEDBACK'], 'select' => ['ID', 'LID', 'SUBJECT', 'BODY_TYPE']]);print_r($msg);// подстановки в шаблоне пишутся решётками вокруг кода поля событияКоды в шаблоне и ключи массива полей обязаны совпадать до символа. Лишний пробел или другой регистр превращают подстановку в обычный текст, который так и уезжает покупателю.
Отправляем тестовое письмо с заведомо полными данными:
\CEvent::SendImmediate('VENDOR_FEEDBACK', SITE_ID, [ 'NAME' => 'Проверка', 'PHONE' => '+70000000000', 'MESSAGE' => 'текст заявки',], 'N');// если тестовое письмо пришло целым, дело в коде, который собирает поляСмотрим, что попадает в поля из формы:
\Bitrix\Main\Diag\Debug::writeToFile($request->getPostList()->toArray(), date('H:i:s'), 'feedback.log');// массив запроса показывает реальные имена полей формы, а не ожидаемыеПричины
-
Коды подстановок не совпадают с полями события примерно 30% случаев
ПризнакВ письме видны сами подстановки решётками или пустые строки вместо значений.
ПроверкаСравниваем ключи массива полей события с кодами подстановок в шаблоне письма.
Что делатьПриводим коды к одному виду и проверяем результат тестовой отправкой письма.
-
Множественные значения приходят массивом примерно 20% случаев
ПризнакВ письме вместо списка значений виден массив или пустая строка.
ПроверкаПечатаем поле события и смотрим, массив это или уже собранная строка.
Что делатьСобираем множественные значения в строку до отправки, а не в шаблоне письма.
-
Письмо собрано по другому шаблону примерно 20% случаев
ПризнакТексты письма отличаются от того шаблона, который правили последним.
ПроверкаСмотрим все шаблоны этого типа события и их привязку к сайтам проекта.
Что делатьОтключаем лишние шаблоны и оставляем по одному активному на каждую витрину.
-
Значения потерялись до отправки письма примерно 15% случаев
ПризнакМассив полей события пустой, хотя заявка в базе сохранена целиком.
ПроверкаПишем массив запроса в журнал и сверяем имена полей формы с ожидаемыми.
Что делатьПравим сборку полей события: берём значения из запроса по их реальным именам.
-
Вложения не прикладываются к письму примерно 15% случаев
ПризнакТекст письма целый, а файла, приложенного посетителем, в письме нет.
ПроверкаПроверяем, передаётся ли идентификатор файла в поля события отправки.
Что делатьПередаём файл вложением события либо кладём в письмо ссылку на скачивание.
Частые вопросы
Где посмотреть, что ушло в письмо?
В очереди почтовых событий: там хранится массив полей ровно в том виде, в каком его получил шаблон. Это первое место разбора для любого письма.
Почему в письме видны сами подстановки?
Код подстановки не совпал ни с одним полем события и остался обычным текстом. Коды сверяют посимвольно, включая регистр букв.
Как передать список значений?
Собрать его в строку до отправки события, например через запятую или переносы. Шаблон письма массивы разворачивать не умеет.
Почему письмо не похоже на шаблон, который я правил?
У типа события несколько шаблонов, и активен другой либо привязанный к другому сайту. Лишние шаблоны отключают, оставляя по одному на витрину.
Можно ли приложить файл к письму?
Да, вложением почтового события, но крупные файлы лучше отдавать ссылкой. Ссылка не упирается в ограничения почтовых серверов на размер письма.
Смежное
- Формы и заявки - оглавление подтемы
- Заявка с формы не сохранилась: разбор причин - когда заявки нет вовсе
- Форма обратной связи: веб-форма, письма, свой обработчик - как собирают такое письмо
- Настройка веб-формы: вопросы, статусы результатов, права - откуда берутся коды вопросов
- Своё письмо с сайта: тип события, шаблон, поля и отправка - устройство шаблонов и подстановок
- Письма с сайта не доходят: разбор причин по убыванию частоты - соседний разбор по доставке
- Очередь писем: фоновая отправка, порции, повторы, чистка - где лежат письма до отправки
- Контентные модули - устройство модулей контента целиком