Chcę wysyłać wiadomości e-mail w formacie HTML przy użyciu takich szablonów Django:
<html>
<body>
hello <strong>{{username}}</strong>
your account activated.
<img src="mysite.com/logo.gif" />
</body>
Nic nie mogę znaleźć send_mail
, a django-mailer wysyła tylko szablony HTML, bez dynamicznych danych.
Jak korzystać z silnika szablonów Django do generowania wiadomości e-mail?
django
email
django-email
django-mailer
Anakin
źródło
źródło
1.7
oferty Djangohtml_message
nasend_email
stackoverflow.com/a/28476681/953553Odpowiedzi:
Z dokumentów , aby wysłać wiadomość e-mail w formacie HTML, należy użyć alternatywnych typów treści, takich jak:
Prawdopodobnie będziesz potrzebować dwóch szablonów wiadomości e-mail - tekstowego, który wygląda mniej więcej tak, przechowywanego w katalogu szablonów pod
email.txt
:i HTMLy, przechowywany pod
email.html
:Następnie możesz wysłać wiadomość e-mail przy użyciu obu tych szablonów, korzystając z
get_template
:źródło
plaintext
ihtmly
, i po prostu ustawić szablony i konteksty podczas definiowaniatext_content
ihtml_content
.Chłopców i dziewcząt!
Od wersji 1.7 Django w metodzie send_email
html_message
parametr został dodany.Możesz więc po prostu:
źródło
render_to_string
podpowiedź, bardzo przydatna.send_mail
można jednak ustawić niestandardowego nagłówka, np.Return-Path
Który można ustawić za pomocą opcjiEmailMultiAlternatives's constructor header parameter
Zrobiłem django-szablonowy e-mail , starając się rozwiązać ten problem, zainspirowany tym rozwiązaniem (i potrzebą, w pewnym momencie, przejścia z używania szablonów django na używanie mailchimp itp. Zestawu szablonów do e-maili transakcyjnych, szablonowych dla mój własny projekt). Nadal jest to jednak praca w toku, ale w powyższym przykładzie zrobiłbyś:
Po dodaniu następującego pliku do settings.py (aby uzupełnić przykład):
Spowoduje to automatyczne wyszukanie szablonów o nazwach „templated_email / email.txt” i „templated_email / email.html” odpowiednio dla części zwykłej i HTML w normalnych katalogach / modułach ładujących django (narzekając, jeśli nie może znaleźć co najmniej jednego z nich) .
źródło
django.shortcuts.send_templated_mail
: code.djangoproject.com/ticket/17193Użyj EmailMultiAlternatives i render_to_string, aby skorzystać z dwóch alternatywnych szablonów (jeden w postaci zwykłego tekstu i jeden w html):
źródło
Stworzyłem Django Simple Mail, aby mieć prosty, konfigurowalny i wielokrotnego użytku szablon dla każdej transakcyjnej wiadomości e-mail, którą chcesz wysłać.
Treść i szablony wiadomości e-mail można edytować bezpośrednio od administratora django.
Na przykład zarejestrowałbyś swój adres e-mail:
I wyślij to w ten sposób:
Chciałbym uzyskać wszelkie informacje zwrotne.
źródło
W przykładzie występuje błąd .... jeśli użyjesz go tak, jak napisano, wystąpi następujący błąd:
Musisz dodać następujący import:
i zmień słownik na:
Zobacz http://docs.djangoproject.com/en/1.2/ref/templates/api/#rendering-a-context
źródło
Django Mail Templated to bogata w funkcje aplikacja Django do wysyłania wiadomości e-mail za pomocą systemu szablonów Django.
Instalacja:
Konfiguracja:
Szablon:
Pyton:
Więcej informacji: https://github.com/artemrizhov/django-mail-templated
źródło
Wiem, że to stare pytanie, ale wiem też, że niektórzy ludzie są tacy jak ja i zawsze szukają aktualnych odpowiedzi , ponieważ stare odpowiedzi mogą czasami zawierać nieaktualne informacje, jeśli nie zostaną zaktualizowane.
Jest teraz styczeń 2020 i używam Django 2.2.6 i Python 3.7
Uwaga: Korzystam z DJANGO REST FRAMEWORK , poniższy kod do wysyłania e-maili był w moim widoku modelu
views.py
Po przeczytaniu wielu fajnych odpowiedzi właśnie to zrobiłem.
Ważny! Więc jak się
render_to_string
dostaćreceipt_email.txt
ireceipt_email.html
? U mniesettings.py
mam,TEMPLATES
a poniżej to, jak to wyglądaZwróć uwagę
DIRS
, jest ta linia.os.path.join(BASE_DIR, 'templates', 'email_templates')
Ta linia sprawia, że moje szablony są dostępne. W moim katalogu_projektu mam folder o nazwietemplates
i podkatalog oemail_templates
takiej nazwieproject_dir->templates->email_templates
. Moje szablonyreceipt_email.txt
ireceipt_email.html
znajdują się wemail_templates
podkatalogu.Pozwolę sobie tylko dodać,
recept_email.txt
że tak wygląda;I moje
receipt_email.html
wygląda tak;źródło
Napisałem fragment, który pozwala wysyłać wiadomości e-mail renderowane przy użyciu szablonów przechowywanych w bazie danych. Przykład:
źródło
Jeśli chcesz dynamicznych szablonów wiadomości e-mail dla swojej poczty, zapisz treść wiadomości e-mail w tabelach bazy danych. To właśnie zapisałem jako kod HTML w bazie danych =
W twoich poglądach:
Spowoduje to wysłanie dynamicznego szablonu HTML zapisanego w Db.
źródło
send_emai()
nie działało dla mnie, więc użyłemEmailMessage
tutaj w dokumentach django .Dołączyłem dwie wersje ansera:
Jeśli chcesz dołączyć wersję e-maila w postaci zwykłego tekstu, zmień powyższe w następujący sposób:
Moje wersje zwykła i HTML wyglądają tak: plain_version.html:
html_version.html
źródło
Lubię używać tego narzędzia, aby umożliwić łatwe wysyłanie wiadomości e-mail w formacie HTML i TXT z łatwym przetwarzaniem kontekstowym: https://github.com/divio/django-emailit
źródło