как решить проблему, когда шаблон django не отображается правильно в электронном письме - PullRequest
0 голосов
/ 14 июня 2019

У меня есть шаблон, который должен отображать HTML-шаблон для пароля сброса.Я получаю электронное письмо, но результатом является не сам шаблон, а код внутри шаблона.

Я пытался проверить, не было ли ошибок в html-файле, но я не нашел ни одной.Я использую django-rest-framework для отправки электронной почты

. Внутри шаблона находится только HTML-код:

<!DOCTYPE html>
<html>
<head>

  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <title>Réinitialisation de votre mot de passe</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style type="text/css">

...
...
...

, что внутри settings.py:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '******'
EMAIL_HOST_PASSWORD = '******'

DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

ACCOUNT_EMAIL_SUBJECT_PREFIX = ""


if config('USE_SENDGRID', cast=bool):
    EMAIL_BACKEND = "sendgrid_backend.SendgridBackend"
    SENDGRID_API_KEY = config('SENDGRID_API_KEY')
    SENDGRID_SANDBOX_MODE_IN_DEBUG = False
else:
    #EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

Я получаю электронное письмо, но получаю код внутри файла, а не скомпилированный HTML-код.Спасибо

1 Ответ

0 голосов
/ 14 июня 2019

Без кода, который вы использовали для отправки электронного письма, трудно понять, в чем дело. Похоже, вы отправляете почту с чем-то вроде send_mail. Для отправки почты в формате html используйте EmailMultiAlternatives

Например:

from django.core.mail import EmailMultiAlternatives

subject, from, to = 'Hello World', 'noreply@example.com', 'example@example.com'
text = 'hello'
html = '<h1>Hello</h1><p>world</p>'
msg = EmailMultiAlternatives(subject, text, from, [to])
msg.attach_alternative(html, "text/html")
msg.send()
...