При интеграции по SMTP часто возникает задача передать в письме не просто одну переменную (например, имя пользователя), а динамический контент. Это может быть список товаров в корзине, адреса ближайших пунктов выдачи или доступные размеры одежды.
Чтобы не формировать весь HTML-код на стороне отправителя, в SaM oTPravil реализована поддержка мощного шаблонизатора.
Шаблонизатор Jinja
Мы используем шаблонизатор Jinja (аналогично тому, как это реализовано в Mailganer). Это позволяет использовать логические конструкции прямо в коде письма.
Основные возможности
Циклы (for): позволяют итерироваться по массивам данных. Например, если вам нужно вывести список всех позиций в заказе.
Условия (if): позволяют отображать или скрывать блоки контента в зависимости от переданных данных.
Действия и фильтры: поддерживаются стандартные конструкции через вертикальную черту (|), например, приведение к числу (|int) или суммирование (|sum).
Пример реализации
Цикл в вёрстке. В HTML-коде письма конструкция будет выглядеть так:
<ul>
{% for item in items %}
<li>{{ item.name }} — {{ item.price }} руб.</li>
{% endfor %}
</ul>
Передача данных в запросе. В самом запросе (JSON) вы передаете массив объектов, который шаблонизатор подставит в цикл:
Использование Jinja в связке с SaM oTPravil дает разработчикам гибкость: вы передаете «сырые» данные, а сервис сам отрисовывает финальный HTML-вид письма. Это упрощает логику на стороне вашего приложения и позволяет дизайнерам править вёрстку без участия бэкенд-разработчиков.
Те, кто уже знаком с Jinja, смогут использовать весь потенциал шаблонизатора (фильтры, форматирование и сложные условия) «из коробки».