在mail_admins()

时间:2017-12-21 01:20:50

标签: django django-views

我有以下视图代码段,我想将EmailMultiAlternatives的电子邮件发送给管理员,问题是...它不呈现html标记。 请提供一些想法。

subject = "A New Feedback"

ctx = {
            'name': name,
            'email': email,
            'message': message
        }

message = ('ecoke/includes/email_feedback.html', ctx)

mail_admins(subject, message, fail_silently=True, html_message='text/html')

1 个答案:

答案 0 :(得分:0)

mail_adminssend_mail的包装器。

send_mail文档中html_message被描述为要附加到电子邮件的HTML邮件,其中message是纯文本字符串。

根据您的情况,您需要呈现(render_to_string)邮件并将其作为HTML附加。

subject = "A New Feedback"

ctx = {
            'name': name,
            'email': email,
            'message': message
        }

html_message = render_to_string(
    'ecoke/includes/email_feedback.html', 
    context=ctx
)
text_message = 'Hi %s, <plain text goes here>' % name

mail_admins(subject, text_message, fail_silently=True, html_message=html_message)

发生的事情是你有两个版本的文字;一个用于HTML的纯文本。由于HTML不是由mail_admins呈现的,因此您需要手动将模板呈现为HTML。 HTML消息作为替代附加,如图here所示。