2016-04-01 3 views
0

Ich habe eine E-Mail-Vorlage, die ich verwenden, um E-Mails verschiedener Art zu senden. Ich möchte lieber nicht mehrere HTML-E-Mail-Vorlagen speichern. Daher ist es am besten, den Inhalt der Nachricht anzupassen. Wie so:Django E-Mail-Nachricht als HTML

def email_form(request): 
    html_message = loader.render_to_string(
      'register/email-template.html', 
      { 
       'hero': 'email_hero.png', 
       'message': 'We\'ll be contacting you shortly! If you have any questions, you can contact us at <a href="#">[email protected]</a>', 
       'from_email': '[email protected]', 
      } 
     ) 
    email_subject = 'Thank you for your beeswax!' 
    to_list = '[email protected]' 
    send_mail(email_subject, 'message', 'from_email', [to_list], fail_silently=False, html_message=html_message) 
    return 

Wenn die E-Mail jedoch gesendet wird, funktionieren die HTML-Codes nicht. Die Nachricht wird genau wie in Klammern und alle angezeigt. Gibt es eine Möglichkeit für mich, es als HTML-Tags zu rendern?

+0

Hat Ihr generiertes HTML die richtigen Meta-Attribute? Können Sie einen Teil des oberen Teils des generierten HTML einfügen? –

Antwort

0

Gelöst es. Nicht sehr elegant, aber es funktioniert. Falls jemand neugierig ist, sollte die in der E-Mail-Vorlage platzierte Variable wie folgt implementiert werden:

{{ your_variable|safe|escape }} 

Dann funktioniert es! Danke Leute!

1

Sie können das Feature E-MailMultiAlternatives in django verwenden, anstatt E-Mail mit E-Mail senden zu senden. Ihr Code sollte wie das folgende Snipet aussehen.

from django.core.mail import EmailMultiAlternatives 

def email_form(request): 
    html_message = loader.render_to_string(
      'register/email-template.html', 
      { 
       'hero': 'email_hero.png', 
       'message': 'We\'ll be contacting you shortly! If you have any questions, you can contact us at <a href="#">[email protected]</a>', 
       'from_email': '[email protected]', 
      } 
     ) 
    email_subject = 'Thank you for your beeswax!' 
    to_list = '[email protected]' 
    mail = EmailMultiAlternatives(
      email_subject, 'This is message', 'from_email', [to_list]) 
    mail.attach_alternative(html_message, "text/html") 
    try: 
     mail.send() 
    except: 
     logger.error("Unable to send mail.") 
+0

Danke für Ihre Antwort! Ich habe versucht, deine Lösung zu implementieren und mich mit der auf Djangos eigenen Dokumenten basierenden Ansicht herumzuschlagen. Es hat leider nicht funktioniert. Die HTML-Tags wurden immer noch nicht analysiert. Ich habe auch versucht, "html" anstelle von "text/html" zu verwenden, auch nicht. – Bob