#1076: Можно ли клиентам получать почтовые уведомления с сохранением цитирования?
Отредактирована: 216 дней назадСимптомы
Клиент хочет, чтобы при отправке почтовых уведомлений из тикета, в сообщении отображались все предыдущие сообщения переписки в виде квотирования.
Решение
Все сообщения от системы уходят одним комментарием, но почтовые клиенты обычно группируют их в треды, которые уже можно листать и просматривать. Рекомендуется настраивать работу именно в таком режиме.
Описанный ниже сценарий может применяться только с полным пониманием, что он никогда не будет полностью имитировать работу почтовых клиентов или серверов, а лишь шаблонизировать сообщения от тикетной системы похожим образом!
Ниже вы найдёте шаблон уведомления, который нужно установить вот тут: Настройки -> Настройки почтовых шаблонов -> вкладка "Уведомления о заявках" -> Нужный шаблон . В этом конкретном примере выбираем Любой ответ добавлен в мою заявку ,** чтобы письма с квотированием получали клиенты.
Это шаблон шаблон HTML, шаблон Plain текста трогать не нужно. Рекомендуется на всякий случай где-нибудь сохранить старый шаблон, на случай, если потребуется откатить всё назад.
Обратите внимание, что уведомления с полной перепиской заявки начнут получать все сотрудники, у которых включено уведомление "Публичный ответ добавлен"
{% extends "notifications/base_email.html" %}
{% block header %}
{% if comment.is_staff %}
<p>Получен ответ от сотрудника поддержки. {{ comment.author.name }} пишет:</p>
{% else %}
<p>Клиент {% if comment.author.name %}{{ comment.author.name }}{% else %}{{ comment.author.email }}{% endif %} пишет:</p>
{% endif %}
{% endblock %}
{% block body %}
{{ body_html|safe }}
{% if attachments %}
<hr/>
<p>Вложенные файлы:</p>
<ul>
{% for attachment in attachments %}
<li><a href="{{ attachment.path }}">{{ attachment.name }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if comment.sensitive_data %}
<hr/>
<p><b>Ответ содержит конфиденциальные данные, которые можно посмотреть, перейдя по <a href="{{ instance.base_url }}/tickets/{{ ticket.id }}#comment-{{ comment.id }}">ссылке</a></b></p>
{% endif %}
{% if ticket.comments.filter(public=True,author__is_system=False).exclude(id=comment.id).count() > 0 %}
<blockquote><p>Предыдущая переписка в заявке:</p>
{% set quote_count = 0 %}
{% for quoted_comment in ticket.comments.filter(public=True, author__is_system=False).exclude(id=comment.id).order_by("-created_at") %}
<blockquote><p>{{ quoted_comment.created_at.strftime("%Y-%m-%d %H:%M:%S") }} {% if quoted_comment.is_staff %}сотрудник поддержки {{ quoted_comment.author.name }} пишет:</p>{% else %}клиент {% if quoted_comment.author.name %}{{ quoted_comment.author.name }}{% else %}{{ quoted_comment.author.email }}{% endif %} пишет:</p>{% endif %}
{{ quoted_comment.body|safe }}
{% set quote_count = quote_count + 1 %}
{% endfor %}
{% for i in range(quote_count) %}
</blockquote>
{% endfor %}
</blockquote>
{% endif %}
{% endblock %}
{% block footer %}
<p>Вы получили это уведомление, потому что являетесь участником в заявке:</p>
<p><a href="{{ instance.base_url }}/tickets/{{ ticket.id }}">#{{ ticket.id }}: {{ ticket.subject }}</a></p>
<p></p>
<p>Чтобы отключить получение этой рассылки, пройдите в <a href="{{ instance.base_url }}/profile">личный кабинет</a> и настройте почтовые уведомления.</p>
{% endblock %}
Причина
Здесь важно отметить, что Свормика не является полным замещением почтового сервера и/или клиента by design.
Входящие почтовые сообщения мы специально санитизируем, выкусывая лишнее квотирование, чтобы не засорять ленту тикета. Для исходящих сообщений можно настраивать шаблоны уведомлений убирая/добавляя дополнительные блоки.