Мои проекты

Меняем тексты и оформление писем

Три файла на тип письма, допустимые переменные и одинаковые действия в HTML и обычном тексте.

Урок 14 / 22 · Commentail 1.3.2

Письмо состоит из темы, обычного текста и HTML-версии. Меняйте обе версии вместе: часть клиентов показывает только текст. Для начала изменим подтверждение адреса.

Создадим три файла

В проектной папке templates создайте commentail/emails/confirm_subject.txt:

django
{% load i18n %}{% autoescape off %}{% trans "Confirm your email" %} — {{ site_name }}{% endautoescape %}

Тема должна быть непустой и однострочной. Далее commentail/emails/confirm.txt:

django
{% load i18n %}{% autoescape off %}{% trans "Confirm your email" %}

{{ site_name }}
{{ action_url }}

{% trans "Open the link and confirm on the next page." %}
{% endautoescape %}

И commentail/emails/confirm.html:

django
{% load i18n %}<!doctype html>
<html><body>
  <h1>{% trans "Confirm your email" %}</h1>
  <p>{{ site_name }}</p>
  <p><a href="{{ action_url }}">{% trans "Open confirmation page" %}</a></p>
  <p>{% trans "Open the link and confirm on the next page." %}</p>
</body></html>

Эти английские строки в {% trans %} — ключи вашего проектного каталога переводов. Для русского результата добавьте их переводы в locale проекта и скомпилируйте каталог; каталог самой библиотеки не обязан содержать новые фразы. Для одного языка допустим собственный текст, но двуязычному сайту нужен перевод.

В plain text autoescape выключен, чтобы амперсанды ссылок и имена оставались буквальными. В HTML оставьте экранирование включённым. Действие выполняется на открывшейся странице, поэтому не называйте переход мгновенным подтверждением.

Остальные виды

Тем же способом переопределяются edit, published, rejected, reply: у каждого <kind>_subject.txt, <kind>.txt, <kind>.html. Publication/rejection включают решения по авторским правкам; используйте is_revision, чтобы текст не обещал публикацию нового комментария вместо принятия исправления. Пустой HTML-файл создаёт пустую HTML-часть, а не отключает её.

Доступны только kind, author_name, site_name, site_url, target_url, action_url, view_url, reason, is_revision, expires_at. reason относится к отклонению, view_url — к подтверждению. Ссылки абсолютные. request, адрес получателя и модель комментария в контекст не передаются. В уведомление об ответе нельзя добавлять текст/фрагмент ответа: штатный контракт предусматривает имена и ссылки.

Общие emails/base.html и button.html — внутренние помощники оформления, не дополнительный стабильный API. Если нужна независимая вёрстка, переопределите пять HTML-тел целиком.

Проверим письма

Сначала используйте console backend на учебном сайте. Создайте гостя, подтверждение, публикацию, правку, отклонение и прямой ответ. Смотрите обе MIME-части и непустую тему. Письмо рендерится на сохранённом языке получателя, даже если обработчик работает с другой локалью.

После локальной проверки отправьте на собственный разрешённый адрес через выбранный backend и посмотрите реальный клиент. Ошибка синтаксиса или темы оставит задание failed; исправьте шаблон и повторите отправку, пока исходная ссылка действительна.

Другие уроки по этой задаче

Документация по теме

Была ли статья полезна?

Комментарии 0

Имя: до 40 символов.

После отправки мы пришлём письмо со ссылкой для подтверждения email.

Не более 5000 символов.

Опубликованных комментариев пока нет.