发送模板电子邮件 Django 1.11 错误(信件中的 html 标签)

Send templates emails Django 1.11 error (html tags in letter)

我正在尝试发送模板电子邮件。

代码:

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()

但是信件带有所有 html 标签 如何发送没有 html 标签的信件?

如有任何帮助,我们将不胜感激。谢谢!

来自 documentationEmailMessage:

body: The body text. This should be a plain text message.

要发送 HTML 消息,您需要使用 django.core.mail.EmailMultiAlternatives 而不是 EmailMessagedocumentation 提供了一个包含 HTML 消息的示例。

或者你可以使用 django.core.mail.send_mail 接受一个 html_message 参数,像这样:

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
    )