2017-10-13 2 views
0

J'essaie d'envoyer des e-mails de modèle.Envoyer des e-mails de modèles erreur Django 1.11 (balises html dans la lettre)

code:

def send_admin_notification(ticket): 
    subject = "Notification: NEW TICKET." 
    to = [DEFAULT_ADMIN_EMAIL] 
    from_email = settings.DEFAULT_FROM_EMAIL 
    template = 'emails/admin.html' 
    ctx = { 
     "ticket_id": ticket.id, 
     "subject": ticket.subject, 
     "text": ticket.support_text, 
     "email": ticket.email, 
    } 
    message = render_to_string(template, ctx) 
    msg = EmailMessage(subject, message, to=to, from_email=from_email) 
    msg.send() 

Mais la lettre est livré avec toutes les balises HTML comment envoyer une lettre sans balises html?

Toute aide serait appréciée. Merci!

Répondre

0

De l'documentation pour EmailMessage:

corps: Le corps du texte. Cela devrait être un message texte brut.

Pour envoyer des messages HTML, vous devez utiliser django.core.mail.EmailMultiAlternatives au lieu de EmailMessage. Le documentation fournit un exemple qui inclut un message HTML.

Vous pouvez également utiliser django.core.mail.send_mail qui accepte un argument html_message, quelque chose comme ceci:

from django.core.mail import send_mail 

def send_admin_notification(ticket): 
    subject = "Notification: NEW TICKET." 
    from_email = settings.DEFAULT_FROM_EMAIL 
    tpl= 'emails/admin.html' 

    html_message = render_to_string(tpl, ctx) 

    send_mail(
     subject=subject , 
     message='', # Plain text version of message - advisable to provide this 
     from_email=from_email 
     recipient_list=[DEFAULT_ADMIN_EMAIL], 
     html_message=html_message 
    )