通过django发送的邮件呈现html模板

时间:2011-04-18 14:22:53

标签: django templates

我有一个django模板,我必须作为电子邮件正文发送,我发送的变量相应地在电子邮件中呈现,但模板中使用的html标签不呈现。这是代码..

t = loader.get_template('registration/subscription_employee.html')
                c = {'site_name': current_site.domain,'user': user,'employer':employer}
                send_mail(("Subscription Agreement of %s")%data['username'], t.render(Context(c)), None, [settings.PAYPAL_PRIMARY_EMAIL,data['email']],fail_silently = True) 

我如何确保相应地呈现html标签。

3 个答案:

答案 0 :(得分:3)

默认情况下,django会发送文本/纯文本电子邮件,因此您不会在信件中看到任何HTML。

您可以更改此设置,请查看documentation

from django.core.mail import EmailMultiAlternatives

subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'
text_content = 'This is an important message.'
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()

答案 1 :(得分:2)

您需要使用attach_alternative()或为您的消息指定内容子类型。请参阅有关发送HTML电子邮件的文档:http://docs.djangoproject.com/en/1.3/topics/email/。特定于HTML的信息大约是页面的一半。希望能帮到你。

答案 2 :(得分:1)

您正在以纯文本电子邮件发送HTML邮件。如果您只想发送HTML,请使用EmailMessage并设置添加标头{'Content-type': 'text/html'}。许多用户更友好的解决方案是使用EmailMultiAlternatives发送文本和HTML。