2011-04-18 54 views
1

我有一个django模板,我必须发送邮件正文,我发送的变量会在电子邮件中相应呈现,但模板中使用的html标记不会呈现。这里的代码..通过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

默认情况下,django发送文本/普通电子邮件,所以你不会在你的信件中看到任何HTML。

你可以改变这一点,看看在documentation

from django.core.mail import EmailMultiAlternatives 

subject, from_email, to = 'hello', '[email protected]', '[email protected]' 
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

你发送HTML消息作为纯文本电子邮件。如果您只想发送HTML,请使用EmailMessage并设置添加标题{'Content-type': 'text/html'}。用户更友好的解决方案是将文本和HTML发送到EmailMultiAlternatives