Шаблон хранит вёрстку письма на стороне сервиса. Приложение передаёт только slug шаблона, язык и параметры — менять текст и оформление можно в панели, не выкладывая новую версию кода.
Для подстановки используется синтаксис Jinja2: значение вставляется двойными фигурными скобками, доступны условия и циклы.
<h1>Здравствуйте, {{ name }}!</h1>
<p>Заказ №{{ order }} принят. Доставка — {{ delivery }}.</p>
{% if promo %}
<p>Промокод на следующий заказ: <b>{{ promo }}</b></p>
{% endif %} У шаблона может быть отдельная версия для каждого языка. При отправке указывается lang, и сервис берёт нужный вариант. Если версии для запрошенного языка нет, используется язык по умолчанию.
Шаблон отправляется по slug через REST API, метод /external/send_email_tpl/:
{
"recipient": "client@example.ru",
"tpl": "order-confirmed",
"lang": "ru",
"params": {
"name": "Алексей",
"order": "4417",
"delivery": "завтра до 18:00"
},
"auth": {
"username": "<логин токена>",
"password": "<пароль токена>"
}
}Общие элементы — логотип, цвета, подвал — задаются в настройках шаблонов домена и применяются ко всем письмам. Логотип можно загрузить или указать ссылку на свой, если не хотите, чтобы в письмах появлялись адреса fmailer.
Если шаблоны должны жить в репозитории и выкатываться через CI/CD, используйте Terraform-провайдер.