Django Html 电子邮件向电子邮件正文添加额外字符
Posted
技术标签:
【中文标题】Django Html 电子邮件向电子邮件正文添加额外字符【英文标题】:Django Html email adds extra characters to the email body 【发布时间】:2010-12-20 12:52:29 【问题描述】:我正在使用 Django 发送一封包含文本部分和 html 部分的电子邮件。代码如下:
主题 = request.session.get('email_subject', 无) from_email = request.session.get('user_email', 无) 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), '链接': "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), '链接': "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)) 电子邮件 = EmailMultiAlternatives(主题,text_content,from_email,[to],bcc) email.attach_alternative(html_content, "text/html") 发送 = email.send()当用户收到电子邮件时,其中包含以下文本:“Content-Type: text/html; charset=utf-8”。有什么好办法可以解决吗?
【问题讨论】:
【参考方案1】:您正在使用render_to_response
生成html_content
和text_content
,这将返回一个HttpResponse
对象。
如果您希望 html_content
和 text_content
成为字符串,那么请改用 render_to_string
。
您可以使用以下行导入render_to_string
:
from django.template.loader import render_to_string
【讨论】:
【参考方案2】:在你接受 Alasdair 的建议之前,启动 shell 并查看 render_to_string
和 render_to_response
的输出。 shell 可能会帮助您在未来解决类似的问题。
您提到的“Content-Type: text/html; charset=utf-8”这一行是 HttpResponse 生成的响应的标头。它是简单 HttpResponse 对象(如您的示例中的对象)的标头中的唯一项。
$ ./manage.py shell
Python 2.6.3 (r263:75183, Oct 14 2009, 15:40:24)
Type "help", "copyright", "credits" or "license" for more information.
>>> from django.shortcuts import render_to_response
>>> from django.template.loader import render_to_string
>>> template = 'your_template.html'
>>> print( "\n".join(render_to_string(template).split('\n')[:3]) )
template-line-1
template-line-2
template-line-3
>>> print( "\n".join(str(render_to_response(template)).split('\n')[:3]) )
Content-Type: text/html; charset=utf-8
template-line-1
>>>
【讨论】:
以上是关于Django Html 电子邮件向电子邮件正文添加额外字符的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 根据磁盘使用情况在 HTML 表格电子邮件正文中添加标题和文本颜色
是否可以在 MAILTO 链接的正文中添加 HTML 链接 [重复]
为啥 Outlook 2010 会破坏我的 HTML 电子邮件正文?