我想邮寄一个包含一些数据的简单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)
答案 0 :(得分:2)
您可以尝试这样的事情:
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)
希望这会导致正确的方向。请注意,这里有很多变量来自我自己的编程。
答案 1 :(得分:1)
问题是您需要告诉用户邮件客户端您正在向他们发送HTML电子邮件,否则它只会将HTML显示为文本。
该设置称为MIME类型,您可以在python user guides中阅读有关如何设置此设置(以及在python中发送HTML电子邮件)的更多信息。