Ich möchte HTML-E-Mails mit Django-Vorlagen wie diesen senden:
<html>
<body>
hello <strong>{{username}}</strong>
your account activated.
<img src="mysite.com/logo.gif" />
</body>
Ich kann nichts darüber send_mail
finden und django-mailer sendet nur HTML-Vorlagen ohne dynamische Daten.
Wie verwende ich die Template-Engine von Django, um E-Mails zu generieren?
django
email
django-email
django-mailer
Anakin
quelle
quelle
1.7
bietethtml_message
insend_email
stackoverflow.com/a/28476681/953553Antworten:
Aus der Dokumentation , HTML - E-Mail , die Sie alternativ verwenden Content-Typen senden möchten, wie folgt aus :
Sie möchten wahrscheinlich zwei Vorlagen für Ihre E-Mail - eine einfache Textvorlage, die ungefähr so aussieht und in Ihrem Vorlagenverzeichnis unter gespeichert ist
email.txt
:und ein HTMLy, gespeichert unter
email.html
:Sie können dann eine E-Mail mit diesen beiden Vorlagen senden, indem Sie Folgendes verwenden
get_template
:quelle
plaintext
undhtmly
, und nur Vorlagen und Kontexte gesetzt , wenn Sie definierentext_content
undhtml_content
.Jungen und Mädchen!
Seit Djangos 1.7 in der send_email- Methode wurde der
html_message
Parameter hinzugefügt.Sie können also einfach:
quelle
render_to_string
Hinweis, sehr praktisch.send_mail
ist jedoch nicht möglich, einen benutzerdefinierten Header wie dhReturn-Path
festzulegen, der mit demEmailMultiAlternatives's constructor header parameter
Ich habe Django-Vorlagen-E-Mails erstellt , um dieses Problem zu lösen, inspiriert von dieser Lösung (und der Notwendigkeit, irgendwann von der Verwendung von Django-Vorlagen zur Verwendung eines Mailchimp-Satzes usw. für Vorlagen für transaktionsbezogene Vorlagen-E-Mails zu wechseln mein eigenes Projekt). Es ist zwar noch in Arbeit, aber für das obige Beispiel würden Sie Folgendes tun:
Mit dem folgenden Zusatz zu settings.py (um das Beispiel zu vervollständigen):
Dadurch wird automatisch nach Vorlagen mit den Namen "templated_email / email.txt" und "templated_email / email.html" für den einfachen bzw. den HTML-Teil in den normalen Django-Vorlagenverzeichnissen / -ladern gesucht (Beschwerde, wenn mindestens eine davon nicht gefunden werden kann). .
quelle
django.shortcuts.send_templated_mail
: code.djangoproject.com/ticket/17193Verwenden Sie EmailMultiAlternatives und render_to_string, um zwei alternative Vorlagen zu verwenden (eine im Klartext und eine in HTML):
quelle
Ich habe Django Simple Mail erstellt , um eine einfache, anpassbare und wiederverwendbare Vorlage für jede Transaktions-E- Mail zu haben, die Sie senden möchten.
E-Mail-Inhalte und -Vorlagen können direkt vom Administrator von django bearbeitet werden.
Mit Ihrem Beispiel würden Sie Ihre E-Mail registrieren:
Und senden Sie es so:
Ich würde gerne Feedback bekommen.
quelle
Im Beispiel ist ein Fehler aufgetreten. Wenn Sie ihn wie geschrieben verwenden, tritt der folgende Fehler auf:
Sie müssen den folgenden Import hinzufügen:
und ändern Sie das Wörterbuch wie folgt:
Siehe http://docs.djangoproject.com/de/1.2/ref/templates/api/#rendering-a-context
quelle
Django Mail Templated ist eine funktionsreiche Django-Anwendung zum Senden von E-Mails mit dem Django-Vorlagensystem.
Installation:
Aufbau:
Vorlage:
Python:
Weitere Informationen: https://github.com/artemrizhov/django-mail-templated
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich weiß auch, dass einige Leute genau wie ich sind und immer nach aktuellen Antworten suchen , da alte Antworten manchmal veraltete Informationen enthalten können, wenn sie nicht aktualisiert werden.
Es ist jetzt Januar 2020 und ich verwende Django 2.2.6 und Python 3.7
Hinweis: Ich verwende DJANGO REST FRAMEWORK . Der folgende Code zum Senden von E-Mails befand sich in einem Modell-Viewset in meinem
views.py
Nachdem ich mehrere nette Antworten gelesen hatte, tat ich dies.
Wichtig! Also wie kommt
render_to_string
manreceipt_email.txt
undreceipt_email.html
? In meinem habesettings.py
ichTEMPLATES
und unten ist, wie es aussiehtAchten Sie darauf
DIRS
, dass es diese Zeile gibt. Diese Zeileos.path.join(BASE_DIR, 'templates', 'email_templates')
macht meine Vorlagen zugänglich. In meinem Projektverzeichnis habe ich einen Ordner mit dem Namentemplates
und ein Unterverzeichnisemail_templates
wie diesesproject_dir->templates->email_templates
. Meine Vorlagenreceipt_email.txt
undreceipt_email.html
befinden sich imemail_templates
Unterverzeichnis.Lassen Sie mich das einfach hinzufügen, mein
recept_email.txt
Aussehen sieht so aus;Und mein
receipt_email.html
sieht so aus;quelle
Ich habe ein Snippet geschrieben , mit dem Sie E-Mails senden können, die mit in der Datenbank gespeicherten Vorlagen gerendert wurden. Ein Beispiel:
quelle
Wenn Sie dynamische E-Mail-Vorlagen für Ihre E-Mails wünschen, speichern Sie den E-Mail-Inhalt in Ihren Datenbanktabellen. Dies ist, was ich als HTML-Code in der Datenbank gespeichert habe =
In Ihren Ansichten:
Dadurch wird der dynamischen HTML-Vorlage gesendet, was Sie in Db gespeichert haben.
quelle
send_emai()
hat bei mir nicht funktioniert, also habe ichEmailMessage
hier in Django-Dokumenten verwendet .Ich habe zwei Versionen des Anser aufgenommen:
Wenn Sie eine Nur-Text-Version Ihrer E-Mail einfügen möchten, ändern Sie Folgendes wie folgt:
Meine Plain- und HTML-Versionen sehen folgendermaßen aus: plain_version.html:
html_version.html
quelle
Ich verwende dieses Tool gerne, um das einfache Senden von E-Mail-HTML und TXT mit einfacher Kontextverarbeitung zu ermöglichen: https://github.com/divio/django-emailit
quelle