#django #templates
#django #шаблоны
Вопрос:
У меня есть шаблон 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-теги также отображаются соответствующим образом.
Ответ №1:
По умолчанию 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:
Вам нужно либо использовать attach_alternative(), либо указать подтип содержимого для вашего сообщения. Смотрите документы по отправке HTML-писем:http://docs.djangoproject.com/en/1.3/topics/email /. Специфичная для HTML информация находится примерно на полпути вниз по странице. Надеюсь, это вам поможет.
Ответ №3:
Вы отправляете HTML-сообщение в виде обычного текстового электронного письма. Если вы хотите отправлять только HTML, используйте EmailMessage и установите добавить заголовок {'Content-type': 'text/html'}
. Гораздо более удобным для пользователя решением было бы отправлять как текст, так и HTML с помощью EmailMultiAlternatives.