我有以下视图代码段,我想将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')
答案 0 :(得分:0)
mail_admins
是send_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所示。