Skip to main content
 首页 » 编程设计

python之在电子邮件正文中呈现 HTML

2024年08月30日35bjzhanghao

我想邮寄一个包含一些数据的简单 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) 

请您参考如下方法:

你可以尝试这样的事情:

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) 

希望这会导致正确的方向。请注意,这里有很多变量来 self 自己的编程。