Ошибка Django: Письмо отправляется с HTML-кодом вместо показа шаблона

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

У меня электронная почта настроена на Office365.

@app.task(name="account_opening_email")
def account_opening_email(email):
    """ Method to send account opening email
     :argument
        1) email
    """

    try:
        user        = Account.objects.get(email=email)
        subject     = "Signup Successful"
        html_msg    = render_to_string('accounts/Welcome email.html', context={"username": user.first_name})
        plain_msg   = strip_tags(html_msg)
        from_email  = settings.EMAIL_HOST_USER
        to_email    = [user.email]

        msg = EmailMultiAlternatives(subject=subject, body=plain_msg, from_email=from_email, to=to_email)
        msg.attach_alternative(html_msg, "text/html")
        msg.content_subtype = 'html'
        msg.mixed_subtype = 'related'
        try:
            for i in range(1, 11):
                img_path = settings.STATIC_ROOT + f'/images/image-{i}.png'
                image_name = Path(img_path).name
                with open(img_path, 'rb') as f:
                    image = MIMEImage(f.read())
                    msg.attach(image)
                    image.add_header('Content-ID', f"<{image_name}>")
        except:
            pass

        msg.send()

        logger.info("Email Send")
    except:
    logger.exception("Failed")

Спасибо.

Я бы рекомендовал вам использовать модуль email.mime для создания объекта сообщения. Это то, что я регулярно использую для создания объектов электронной почты MIME (и я отправляю их с помощью Google GMail API, но они должны работать с любыми другими, smtplib, например) :

from email.mime.text import MIMEText

def create_message(email):
    """
    Builds an MIME email object.
    Parameters:
        email: email address to send to
    
    Returns:
        A MIME email object
    """
    message_html = render_to_string('accounts/Welcome email.html', context={"username": user.first_name})

    message = MIMEText(message_html, 'html')
    message['to'] = email
    message['from'] = settings.EMAIL_HOST_USER
    message['subject'] = "Signup Successful"
    return message

В моем почтовом ящике (я использую gmail) они автоматически отображаются как HTML, как и все коммерческие письма, которые я получаю.

Вернуться на верх