Ошибка 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, как и все коммерческие письма, которые я получаю.