Я хочу отправлять HTML-письма с использованием таких шаблонов Django:
<html>
<body>
hello <strong>{{username}}</strong>
your account activated.
<img src="mysite.com/logo.gif" />
</body>
Я ничего не могу найти send_mail
, и django-mailer отправляет только HTML-шаблоны без динамических данных.
Как мне использовать шаблонизатор Django для генерации электронной почты?
django
email
django-email
django-mailer
Анакин
источник
источник
1.7
предлагаетhtml_message
вsend_email
stackoverflow.com/a/28476681/953553Ответы:
Из документов для отправки электронной почты в формате HTML вы хотите использовать альтернативные типы контента, например:
Вам, вероятно, понадобятся два шаблона для вашей электронной почты - простой текстовый, который выглядит примерно так, который хранится в каталоге шаблонов в
email.txt
:и HTMLy, хранящийся в
email.html
:Затем вы можете отправить электронное письмо с использованием обоих этих шаблонов
get_template
, например, так:источник
plaintext
иhtmly
, и просто устанавливать шаблоны и контексты при определенииtext_content
иhtml_content
.Мальчики и девочки!
Начиная с 1,7 в Django в методе send_email,
html_message
параметр был добавлен.Так что вы можете просто:
источник
render_to_string
подсказку, очень удобно.send_mail
невозможно установить какой-либо пользовательский заголовок, например,Return-Path
который можно установить с помощьюEmailMultiAlternatives's constructor header parameter
Я сделал django-templated-email в попытке решить эту проблему, вдохновленный этим решением (и необходимостью в какой-то момент переключиться с использования шаблонов django на использование mailchimp и т. Д. Набора шаблонов для транзакционных, шаблонных электронных писем для мой собственный проект). Это все еще в стадии разработки, но для приведенного выше примера вы бы сделали:
С добавлением следующего в settings.py (для завершения примера):
При этом автоматически будут искать шаблоны с именами «templated_email / email.txt» и «templated_email / email.html» для обычной и html-частей соответственно в обычных шаблонах django dirs / loaders (жалуются, если не могут найти хотя бы один из них) ,
источник
django.shortcuts.send_templated_mail
: code.djangoproject.com/ticket/17193Используйте EmailMultiAlternatives и render_to_string, чтобы использовать два альтернативных шаблона (один в виде обычного текста и один в формате html):
источник
Я создал Django Simple Mail, чтобы иметь простой, настраиваемый и многократно используемый шаблон для каждого транзакционного электронного письма, которое вы хотите отправить.
Содержимое и шаблоны электронных писем могут быть отредактированы непосредственно от администратора django.
На вашем примере вы зарегистрируете свою электронную почту:
И пошлите это так:
Я хотел бы получить любую обратную связь.
источник
В примере есть ошибка .... если вы используете ее как написано, возникает следующая ошибка:
Вам нужно будет добавить следующий импорт:
и измените словарь на:
См. Http://docs.djangoproject.com/en/1.2/ref/templates/api/#rendering-a-context.
источник
Django Mail Templated - это многофункциональное приложение Django для отправки электронных писем с помощью системы шаблонов Django.
Монтаж:
Конфигурация:
Шаблон:
Python:
Больше информации: https://github.com/artemrizhov/django-mail-templated
источник
Я знаю, что это старый вопрос, но я также знаю, что некоторые люди похожи на меня и всегда ищут обновленные ответы , так как старые ответы могут иногда быть устаревшей, если не обновляться.
Сейчас январь 2020 года, и я использую Django 2.2.6 и Python 3.7
Примечание: я использую DJANGO REST FRAMEWORK , код ниже для отправки электронной почты был в наборе моделей в моем
views.py
Итак, прочитав несколько хороших ответов, это то, что я сделал.
Важный! Так как же
render_to_string
получитьreceipt_email.txt
иreceipt_email.html
? По моемуsettings.py
у меняTEMPLATES
и ниже так выглядитОбратите внимание
DIRS
, что есть эта строка. Именноos.path.join(BASE_DIR, 'templates', 'email_templates')
эта строка делает мои шаблоны доступными. В моей project_dir, у меня есть папка с именемtemplates
, и sub_directory названием ,email_templates
как этоproject_dir->templates->email_templates
. Мои шаблоныreceipt_email.txt
иreceipt_email.html
находятся вemail_templates
подкаталоге.Позвольте мне просто добавить, что моя
recept_email.txt
внешность такая;И моя
receipt_email.html
выглядит так;источник
Я написал фрагмент, который позволяет отправлять электронные письма с шаблонами, хранящимися в базе данных. Пример:
источник
Если вам нужны динамические шаблоны электронной почты для вашей почты, сохраните содержимое электронной почты в таблицах базы данных. Это то, что я сохранил как HTML-код в базе данных =
По вашему мнению:
Это отправит динамический HTML-шаблон, который вы сохранили в Db.
источник
send_emai()
не работал для меня, поэтому я использовалEmailMessage
здесь в Django Docs .Я включил две версии ансера:
Если вы хотите включить текстовую версию своей электронной почты, измените вышеперечисленное следующим образом:
Мои обычные и HTML-версии выглядят так: plain_version.html:
html_version.html
источник
Мне нравится использовать этот инструмент, чтобы легко отправлять электронные письма HTML и TXT с простой обработкой контекста: https://github.com/divio/django-emailit
источник