рендеринг HTML-шаблонов по почте, отправленной через Django - PullRequest
1 голос
/ 18 апреля 2011

У меня есть шаблон django, который я должен отправить как тело письма, переменные, которые я отправляю, соответствующим образом отображаются в письме, но теги html, используемые в шаблоне, не отображаются. *

t = loader.get_template('registration/subscription_employee.html')
                c = {'site_name': current_site.domain,'user': user,'employer':employer}
                send_mail(("Subscription Agreement of %s")%data['username'], t.render(Context(c)), None, [settings.PAYPAL_PRIMARY_EMAIL,data['email']],fail_silently = True) 

как я могу убедиться, что HTML-теги также отображаются соответственно.

Ответы [ 3 ]

3 голосов
/ 18 апреля 2011

По умолчанию django отправляет текстовые / обычные электронные письма, поэтому вы не увидите HTML в своих письмах.

Вы можете изменить это, взгляните на документацию

from django.core.mail import EmailMultiAlternatives

subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'
text_content = 'This is an important message.'
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()
2 голосов
/ 18 апреля 2011

Вам нужно либо использовать attach_alternative (), либо указать подтип контента для вашего сообщения.См. Документы по отправке электронных писем в формате HTML: http://docs.djangoproject.com/en/1.3/topics/email/. Информация, относящаяся к HTML, находится на полпути вниз по странице.Надеюсь, это поможет вам.

1 голос
/ 18 апреля 2011

Вы отправляете HTML-сообщение как текстовое электронное письмо. Если вы хотите отправить только HTML, используйте EmailMessage и установите заголовок добавления {'Content-type': 'text/html'}. Более удобным для пользователя решением было бы отправить текст и HTML с EmailMultiAlternatives .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...