Как оформить email-уведомление GLPI: шаблон Mailvex и проверка новой заявки
Подготовьте HTML, перенесите его в собственный шаблон уведомления GLPI и проверьте отправку о новой заявке на свой адрес.
Mailvex · 24 октября 2026 · 13 мин чтения

Уведомление службы поддержки должно быстро отвечать на три вопроса: какая заявка создана, каков её статус и где её открыть. Такой макет можно собрать в Mailvex, а данные заявки и отправку поручить GLPI. Для этого вы переносите HTML в свой шаблон уведомления и заменяете подготовленные маркеры тегами GLPI.
Ниже рассматривается одно событие New ticket для GLPI 11 и 12. Проверка выполняется в отдельной тестовой установке, с собственным новым шаблоном и одним получателем — вашим аккаунтом. Стандартный шаблон не перезаписывается. Интеграция через API Mailvex здесь не нужна: вы вручную переносите код и настраиваете уведомление в GLPI.
1. Подготовьте изолированный тест
Шаблоны уведомлений GLPI имеют глобальную область применения. Создание отдельной тестовой entity внутри рабочего GLPI само по себе не обеспечивает изоляцию: к ней могут применяться унаследованные уведомления. Для этого руководства используйте отдельную тестовую установку с контролируемыми настройками почты и собственными аккаунтами.
- Проверьте, что в тестовом GLPI уже включены и работают email-уведомления, настроена исходящая почта и доступна обработка очереди. Ошибку подключения к почтовому серверу нужно устранить до оценки оформления.
- Создайте или выберите свой тестовый аккаунт с действующим адресом электронной почты. Он будет единственным Requester новой заявки.
- Проверьте уже действующие уведомления для New ticket в тестовой установке. Одно событие может соответствовать нескольким определениям.
- Подготовьте доступ к настройкам Notifications и Notification templates, а также аккаунт Mailvex с подтверждённой почтой и доступным экспортом HTML.
- Используйте вымышленные тему и содержание заявки без данных реальных клиентов.
Проверять нужно и дизайн, и маршрут сообщения. Если письмо не сформировалось в очереди, причина может быть в событии или получателе. Если оно стоит в очереди, проблема может быть в её обработке. Эти ситуации нельзя диагностировать только по HTML.
2. Соберите минимальный макет в Mailvex
Выберите простой одноколоночный шаблон с обычным направлением текста слева направо. Оставьте логотип, заголовок, три строки данных, кнопку и контакты поддержки. Не переносите в этот первый пример всю переписку по заявке или сложные условия показа блоков.
| Часть макета | Что вставить в Mailvex |
|---|---|
| Заголовок | Заявка получена |
| ID заявки | Обычный текст GLPI_ID_SLOT |
| Тема заявки | Обычный текст GLPI_TITLE_SLOT |
| Статус | Обычный текст GLPI_STATUS_SLOT |
| Кнопка «Открыть заявку» | Ссылка https://example.com/GLPI_TICKET_LINK |
| Подвал | Актуальные контакты вашей службы поддержки |
Три маркера данных — обычный текст, который вы создаёте сами. Разместите их в текстовых блоках. Ссылка example.com временная: после экспорта она будет полностью заменена тегом GLPI. Не используйте её как рабочую ссылку в отправляемом письме.
Уберите демонстрационные персональные данные и незаполненные {{...}}. В блоках с условиями откройте «Условие показа (ESP)» и выключите «Показывать по условию». Проверьте язык письма и весь подвал. В экспорте выбранный профиль mailvex не заполняет данные GLPI, а демонстрационные значения превью не подтверждают правильную подстановку в будущем уведомлении.
Отключите UTM и статичную веб-версию
В левой панели Mailvex откройте «Настройки» → «UTM-метки» и выключите «Добавлять UTM ко всем ссылкам». После этого заново задайте кнопке ровно https://example.com/GLPI_TICKET_LINK, без параметров после ? и без фрагмента после #. Выключение общей настройки не удаляет параметры, которые раньше добавили к ссылке вручную.
В настройках шапки найдите «Ссылка “Смотреть в браузере”» и выключите «Показывать ссылку». Статичная веб-версия Mailvex не получит данные конкретной заявки от GLPI и может остаться с исходными маркерами. Для перехода используйте кнопку самой заявки.
Проверьте изображения, подписи и узкую версию письма. Файлы изображений должны оставаться доступны по своим URL. Если используете собственное хранение, разместите их по настроенным адресам. Не удаляйте файлы, на которые ссылаются отправленные уведомления.
3. Экспортируйте код и замените все маркеры
- Откройте «Экспорт HTML» в Mailvex. Для этого переноса оставьте «Формат переменных (ESP)» = mailvex.
- Нажмите «Скачать HTML» и сохраните файл на компьютере.
- Откройте файл в текстовом редакторе. Нужен исходный код, а не копирование видимого письма из браузера.
- Сохраните исходную копию и выполните замены в рабочей версии по таблице ниже.
| Найти в экспортированном коде | Заменить на |
|---|---|
| GLPI_ID_SLOT | ##ticket.id## |
| GLPI_TITLE_SLOT | ##ticket.title## |
| GLPI_STATUS_SLOT | ##ticket.status## |
| https://example.com/GLPI_TICKET_LINK | ##ticket.url## |
Для URL используйте замену всех вхождений, а не только первого. Одна видимая кнопка может иметь обычную ссылку и отдельную VML-версию для Outlook. Если исправить только один адрес, разные клиенты могут открыть разные страницы. После замены по очереди найдите GLPI_ID_SLOT, GLPI_TITLE_SLOT, GLPI_STATUS_SLOT и GLPI_TICKET_LINK. Для каждого точного маркера должно остаться ноль совпадений.
При этом теги ##ticket.id##, ##ticket.title##, ##ticket.status## и ##ticket.url## должны остаться в коде буквально. Их значения подставит GLPI при подготовке уведомления. Не заменяйте их вручную данными одной тестовой заявки в постоянном шаблоне.
Если исходного оформления ещё нет, подготовьте в Mailvex простой макет уведомления с тремя текстовыми маркерами и одной кнопкой.
Создать аккаунт Mailvex
4. Разделите содержимое письма и CSS
GLPI формирует собственную оболочку HTML-письма. В Email HTML body нужно перенести внутреннее содержимое body, а основной CSS сохранить в отдельном поле шаблона. Вставка целого документа с head и body создаёт лишние оболочки и не является выбранным здесь способом.
- В рабочем HTML найдите открывающий тег <body. Он может содержать атрибуты: стиль, идентификатор или направление текста.
- Дойдите до закрывающего символа > именно этого открывающего тега. Скопируйте всё после него до закрывающего </body>. Сами теги body не включайте.
- Сохраните внутри скопированного фрагмента таблицы, прехедер, текст, кнопки и стили в атрибутах элементов. Не очищайте разметку вручную ради сокращения.
- В head найдите первый основной безусловный блок, начинающийся с <style type="text/css">. Для поля CSS скопируйте только содержимое после закрывающего > этого открывающего тега до соответствующего </style>, без самих тегов.
- Не переносите в общий CSS отдельный style внутри условного комментария для MSO. Его специальные правила рассчитаны на ограниченную среду; после объединения они могут повлиять на все клиенты.
Скрипты, метаданные head и внешнюю оболочку документа не вставляйте в Email HTML body. В простом макете Mailvex фон уже может быть задан внешней таблицей, однако атрибуты самого body при таком переносе теряются. Поэтому после сохранения в GLPI отдельно проверьте фон, ширину и отступы.
GLPI обрабатывает вставленный HTML. Наличие VML в исходном экспорте не гарантирует, что оно сохранится после обработки или даст точное совпадение в Outlook. Обязательная замена всех адресов решает вопрос назначения ссылки, а внешний вид проверяется на полученном письме.
5. Создайте свой шаблон и Default translation
Откройте Setup → Notifications → Notification templates и нажмите Add. Задайте новое понятное Name, например «Mailvex — New ticket — TEST», и Type = Ticket. В поле CSS этой карточки вставьте подготовленный основной CSS без тегов style. Сохраните шаблон.
В Template translations добавьте Default translation. Эта запись используется как запасной вариант для языков, у которых нет отдельного перевода. Для первого теста достаточно одной согласованной языковой версии; отсутствие перевода не означает автоматический перевод текста.
| Поле перевода | Содержание |
|---|---|
| Subject | Заявка получена: ##ticket.title## |
| Email text body | Полный текстовый вариант уведомления с ID, темой, статусом и ссылкой. |
| Email HTML body | Подготовленный внутренний фрагмент body с тегами GLPI. |
Текст для Email text body можно полностью задать так:
Заявка: ##ticket.id##. Тема: ##ticket.title##. Статус: ##ticket.status##. Открыть заявку: ##ticket.url##. Если нужна помощь, обратитесь в вашу службу поддержки.
Для Email HTML body откройте редактор исходного кода: щёлкните правой кнопкой в области редактора и выберите Source code. Вставьте подготовленный фрагмент именно туда, подтвердите изменение и сохраните перевод. Вставка кода как обычного форматированного текста может показать пользователю сами HTML-теги.
Снова откройте Source code и проверьте сохранённый результат: теги заявки на месте, временных маркеров и example.com/GLPI_TICKET_LINK нет. GLPI добавляет к теме свой служебный префикс, поэтому не дописывайте вручную второй [GLPI #…].
6. Привяжите шаблон к отдельному тестовому уведомлению
Перейдите в Setup → Notifications → Notifications и создайте новое определение через Add. Дайте ему тестовое Name. Пока устанавливаете параметры, оставьте Active = No, выберите Type = Ticket и Event = New ticket.
- Откройте вкладку Templates, которую документация также описывает как Notification templates.
- Через Add a template добавьте привязку: Mode = Email, Notification template = ваш новый шаблон.
- Во вкладке Recipients оставьте только Requester для этого тестового определения.
- Проверьте область действия уведомления и другие определения, которые применяются к той же тестовой заявке.
- Перед единственным тестом установите Active = Yes и сохраните своё определение.
Создайте новую заявку с вымышленной узнаваемой темой. Единственным Requester должен быть ваш тестовый аккаунт с вашим адресом. Отслеживайте именно эту заявку. Изменение старой заявки не заменяет проверку события New ticket.
7. Проверьте очередь и фактически полученное письмо
Откройте Administration → Notification queue и найдите сообщение, связанное с тестовой заявкой. Сверьте получателя и содержимое. Если в активной очереди записи нет, сначала проверьте свой ящик и папку нежелательной почты, затем корзину очереди: обработанная запись могла уже переместиться туда. Посмотрите дату отправки и ошибки. Сама запись в корзине ещё не доказывает доставку. Если сообщение нигде не обнаружено, вернитесь к событию, активности определения, привязке Email и адресу Requester.
Если сообщение остаётся в очереди, проверьте Setup → Automatic actions → queuednotification: состояние действия, последние выполнения и ошибки. Дождитесь настроенного запуска обработчика очереди. Доставка зависит также от исходящего почтового подключения. Не запускайте принудительную обработку ради одного письма без проверки всей очереди: действие может затронуть другие сообщения. Исправление HTML не устраняет ошибку расписания или авторизации на почтовом сервере.
- Откройте своё письмо, включая проверку папки нежелательной почты. Сверьте отправителя и тему.
- Убедитесь, что вместо тегов показаны ID, тема и статус именно тестовой заявки.
- Проверьте текстовую часть и HTML: оба варианта должны объяснять одно событие.
- Нажмите кнопку и убедитесь, что она ведёт в нужную тестовую установку и открывает правильную заявку с учётом ваших прав доступа.
- Проверьте узкий экран, изображения, фон и кнопку в важных для вашей команды почтовых клиентах.
Статус очереди и успешная передача сообщения не гарантируют попадания во входящие или одинакового отображения. Оценка дизайна требует самого полученного письма. Если ссылка ведёт не в ту установку, проверьте URL GLPI и подстановку ##ticket.url##, а не только подпись кнопки.
8. Завершите тест и подготовьте отдельное рабочее изменение
После проверки установите Active = No только у созданного тестового уведомления. Сохраните исходный HTML, CSS, название шаблона и результат проверки. Стандартные шаблоны и чужие определения не меняйте в рамках этого упражнения.
Для рабочего внедрения отдельно определите, какое существующее Email-сопоставление должно использовать новый шаблон, и запишите прежний вариант для возврата. Добавление второго активного уведомления на то же событие может дать дубли. Перед заменой согласуйте получателей, переводы и область действия, затем повторите проверку по рабочему порядку изменений.
Частые проблемы
| Симптом | Что проверить |
|---|---|
| В письмо попали ##ticket.title## или другие теги | Type = Ticket, событие, написание тегов и сохранённый Source code выбранного перевода. |
| Видны GLPI_ID_SLOT или GLPI_TICKET_LINK | Все замены выполнены в той версии HTML, которую сохранили в GLPI. |
| В Outlook кнопка открывает example.com | Заменены все вхождения URL, включая VML, и не осталась старая версия шаблона. |
| Потерялись фон или мобильные стили | Основной CSS перенесён отдельно, стили элементов сохранены, MSO-правила не превращены в общие. |
| В активной очереди нет сообщения | Ящик и корзину очереди с датой отправки и ошибками; затем активное определение, событие, Email-привязку и Requester. |
| Сообщение зависло в очереди | queuednotification, журнал ошибок и исходящее почтовое подключение. |
| Пришло несколько уведомлений | Другие применимые определения, наследование, получатели и повторные события. |
Частые вопросы
ID заявки и её привычный номер — одно и то же?
##ticket.id## выводит идентификатор GLPI. В проверенных версиях 11.0.11 и 12.0.0 он форматируется с ведущими нулями минимум до семи цифр. Если плагин или ваша организация использует отдельный номер, не считайте этот тег его заменой без проверки.
Зачем Default translation, если письмо только на русском?
Это запасной вариант шаблона для получателя, чей язык не имеет отдельного перевода. Текст не переводится автоматически. При добавлении переводов проверяйте Subject, обе части письма и теги в каждом из них.
Можно ли считать отправку из очереди проверкой HTML?
Очередь проверяет другой этап. Сообщение может успешно передаться с неверной ссылкой или нарушенным оформлением. Сверьте данные и фактически полученное письмо отдельно.
Обновится ли GLPI после изменения макета в Mailvex?
Нет. Новый экспорт, замены тегов, перенос фрагмента body и CSS выполняются заново. После сохранения повторите тест, сохранив предыдущий рабочий вариант.
Для следующего уведомления выберите простой шаблон Mailvex и адаптируйте его под одно событие GLPI. Проверяйте данные, получателя и оформление до рабочего внедрения.
Выбрать шаблон письма