#django #django-views #django-templates #django-email
#django #django-просмотры #django-шаблоны #django-email
Вопрос:
Я отправляю электронное письмо с использованием smtp в django, но он показывает свой HTML-код.
Вот мой вид и шаблон django
view.py
current_site = get_current_site(request)
mail_subject = 'Activate Your Account'
mail_message = render_to_string('mail_body.html', {
'user' : user,
'domain' : current_site.domain,
'uid' : urlsafe_base64_encode(force_bytes(user.pk)),
'token' : default_token_generator.make_token(user)
})
mail_to = email,
email = EmailMessage( mail_subject, mail_message, to = mail_to )
email.send()
mail_body.html
<div>
{% autoescape off %}
<b class="text-center">Hello {{ user.username }}</b><br>
Please click on the link below to verify your email address and complete your registration.
<a class="btn btn-primary btn-block" href="http://{{ domain }}{% url 'auth' uidb64=uid token=token
%}" role="button" target="_blank">Verify</a>
<hr />
<br />
If you think, it's not you, then just ignore this email.
{% endautoescape %}
</div>
Комментарии:
1. Вы отправляете электронное письмо как необработанный текст, а не как HTML.
Ответ №1:
Согласно документации: https://docs.djangoproject.com/en/3.1/topics/email /
Вы можете использовать функцию send_mail в качестве оболочки для объекта EmailMessage, а функция send_mail позволяет установить html_message:
from django.core.mail import send_mail
send_mail(mail_subject, '', 'you@example.com', [mail_to], html_message=mail_message)
Ответ №2:
Это потому, что вы используете второй параметр в EmailMessage
. Это сообщение электронной почты в виде текста, а не HTML.
Вы можете использовать html_message=…
параметр [Django-doc], чтобы указать сообщение в формате HTML. Вам все равно понадобится значение для второго параметра, обычно это электронное письмо, но в виде необработанного текста:
mail_to = email,
raw_text = '… email, but then in raw text without makeup …'
email = EmailMessage(mail_subject, raw_text, to=mail_to, html_message=mail_message)
email.send()
Ответ №3:
email.content_subtype=’html’ просто используйте это, и ваша проблема, скорее всего, будет решена