我正在使用Django发送一封包含文本部分和HTML部分的电子邮件 . 这是代码:
subject = request.session.get('email_subject', None)
from_email = request.session.get('user_email', None)
to = request.session.get('user_email', None)
bcc = [email.strip() for email in request.session.get('email_recipients', None).split(settings.EMAIL_DELIMITER)]
text_content = render_to_response(email_text_template, {
'body': request.session.get('email_body', None),
'link': "http://%(site_url)s/ecard/?%(encoded_greeting)s" % {
'site_url': settings.SITE_URL,
'encoded_greeting': urlencode({'g': quote_plus(request.session.get('card_greeting'))}),
},
}, context_instance=RequestContext(request))
html_content = render_to_response(email_html_template, {
'body': request.session.get('email_body', None),
'link': "http://%(site_url)s/ecard/?%(encoded_greeting)s" % {
'site_url': settings.SITE_URL,
'encoded_greeting': urlencode({'g': request.session.get('card_greeting')}),
},
'site_url': settings.SITE_URL,
}, context_instance=RequestContext(request))
email = EmailMultiAlternatives(subject, text_content, from_email, [to], bcc)
email.attach_alternative(html_content, "text/html")
sent = email.send()
当用户收到电子邮件时,其中包含以下文本:“Content-Type:text / html; charset = utf-8” . 有没有一个好方法摆脱这个?
2 回答
您正在使用
render_to_response
生成html_content
和text_content
,它返回HttpResponse
对象 .但是,您希望
html_content
和text_content
为字符串,因此请改用render_to_string .您可以使用以下行导入
render_to_string
:在你使用Alasdair的建议之前,启动shell并查看
render_to_string
和render_to_response
的输出 . shell可能会帮助你在将来找出这样的问题 .您提到的“Content-Type:text / html; charset = utf-8”行是HttpResponse生成的响应的 Headers . 它是标头中唯一一个简单的HttpResponse对象,就像你的例子中那样 .