2

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

2 回答 2

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)

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

于 2012-06-20T12:22:34.290 回答
1

问题是您需要告诉用户邮件客户端您正在向他们发送 HTML 电子邮件,否则它只会将 HTML 显示为文本。

该设置称为 MIME 类型,您可以在python 用户指南中阅读更多关于如何设置(并在 python 中发送 HTML 电子邮件)的信息。

于 2012-06-20T12:15:57.117 回答