2009-11-26 8 views
2

Django를 사용하여 텍스트 부분과 HTML 부분이있는 전자 메일을 보냅니다. 사용자가 전자 메일을 수신하면 그것에서이 텍스트가,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() 

: 다음은 코드의 "콘텐츠 형식 : text/html; 문자셋 = UTF-8". 이걸 없앨 수있는 좋은 방법이 있습니까?

답변

5

html_contenttext_contentrender_to_response과 함께 생성하고 HttpResponse 개체를 반환합니다.

그러나 html_contenttext_content을 문자열로 사용하려면 render_to_string을 대신 사용하십시오. 당신이 Alasdair의 제안에 가기 전에,

from django.template.loader import render_to_string 
2

를 껍질을 발사 및 render_to_stringrender_to_response의 출력을 살펴 :

당신은 다음 줄에 render_to_string를 가져올 수 있습니다. 쉘은 앞으로 이와 같은 문제를 파악하는 데 도움이 될 것입니다.

언급 한 "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 
>>> 
관련 문제