Django - отправка электронной почты в формате html (django-sesame )
Hy,
Я не знаю, как отправить электронное письмо в формате html. Я пробую все примеры, которые могу найти, но я не знаю, как реализовать в моем коде. Когда письмо приходит в почту, оно показывает весь html, а не только сообщение. Пожалуйста, помогите мне реализовать формат send as html в моем коде ниже. Спасибо
def email(request):
campanii = Campanie.objects.order_by('-pub_date')
if request.method == 'POST':
form = EmailLoginForm(request.POST)
if form.is_valid():
email = form.cleaned_data['email'].lower()
user = UserVot.objects.filter(email=email).first()
if user is None: # daca userul nu exista cu acea adresa de email
messages.error(request, "adresa de email nu este corecta sau valida")
return render(request, 'loginvot/email.html', {'form' : form, 'campanii':campanii , 'error_message' : "adresa de email nu este corecta sau valida"} )
link += sesame.utils.get_query_string(user)
user.email_user(
subject="Link vot",
message="""\
<html >
<head>
<meta charset="UTF-8">
</head>
<body>
<p> Salutare, <h4>{{user.username}}</h4></p><br>
<p>Acceseaza link-ul de mai jos pentru a intra in sectiunea de vot "Ambasadorii Valorilor Profi"</p><br>
{{link}}
</body>
</html>
"""
)
return render(request, 'loginvot/email.html', {'campanii':campanii , 'error_succes' : "in maximum 1 minut vei primi pe adresa de email completata un link de accesare sesiune de vot"} )
context = {'form' : EmailLoginForm, 'campanii' : campanii}
return render(request, 'loginvot/email.html', context)
Решение оказалось намного проще, чем я предполагал. Я поместил email сообщение в отдельный файл (template_mail.html) и использовал функцию render_to_string, затем в user.email_user я добавил htmll_message, который принимает этот template_mail. Вот как теперь выглядит и работает код.
template_mail = render_to_string ('loginvot/template_email.html', {'user' : user, 'link' : link } )
user.email_user(
subject='Link vot Ambasadorii valorilor Profi',
message=f"""some message""",
html_message = template_mail
)