Python 在电子邮件正文中呈现HTML

Python 在电子邮件正文中呈现HTML,python,django,Python,Django,我想发送一个包含一些数据的简单HTML文件。我希望用户接收呈现的HTML。我尝试过这个解决方案: b = render_to_string('mail_body.html',{'name':request.POST['name']}) send_mail(email_subject,b,'sender@gmail.com', ['receiver@gmail.com'], fail_silently=False) 但是我在邮件正文中没有呈现HTML,用户可以看到所有HTML标记 或者,

我想发送一个包含一些数据的简单HTML文件。我希望用户接收呈现的HTML。我尝试过这个解决方案:

b = render_to_string('mail_body.html',{'name':request.POST['name']})
send_mail(email_subject,b,'sender@gmail.com', ['receiver@gmail.com'],
    fail_silently=False)
但是我在邮件正文中没有呈现HTML,用户可以看到所有HTML标记

或者,当我使用以下代码时,我只获得邮件正文中HTML文件的路径:

params = {}
params['name'] = request.POST['name']
context = Context(params)
t = Template('mail_body.html')
send_mail(email_subject,t.render(context), 'sender@gmail.com',
    ['receiver@gmail.com'], fail_silently=False)

问题是,您需要告诉用户邮件客户端您正在向他们发送一封HTML电子邮件,否则它将只显示HTML,就好像它是文本一样


此设置称为MIME类型,您可以在中阅读有关如何设置此设置(以及用python发送HTML电子邮件)的更多信息。

您可以尝试以下方法:

from django.core.mail import EmailMultiAlternatives
body = render_to_string(template_name, locals(),
                      context_instance=RequestContext(request))
email = EmailMultiAlternatives(subject, body, mail_sender, [contact_request.email], headers={'Reply-To': 'do_not_reply@whatever.com'})
email.content_subtype='html'
email.send(fail_silently=False)

希望这能引导我们走向正确的方向。请注意,这里有很多来自我自己编程的变量。

我在想,这些样式都是内联的。htmlI建议使用-这可以处理html/附件/图像等的格式设置。。。并且提供了一种发送纯文本的方法——我已经在几个项目中使用过它