Django Html电子邮件为电子邮件正文添加了额外的字符

dam*_*mon 2 python email django

我正在使用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".有没有一个好方法摆脱这个?

Ala*_*air 5

您正在生成html_contenttext_content使用render_to_response,它返回一个HttpResponse对象.

但是你想要html_contenttext_content成为字符串,所以请render_to_string改用.

您可以render_to_string使用以下行导入:

from django.template.loader import render_to_string
Run Code Online (Sandbox Code Playgroud)