30 lines
992 B
Python
30 lines
992 B
Python
from django.conf import settings
|
|
from django.core.mail import EmailMultiAlternatives
|
|
from django.template.loader import render_to_string
|
|
|
|
def send_notification_email(user, subject, template_txt, context, template_html=None):
|
|
"""
|
|
Versendet nur, wenn EMAIL_ENABLED=True und user.email vorhanden.
|
|
template_txt: Pfad zu Plaintext-Template
|
|
template_html: optional Pfad zu HTML-Template
|
|
"""
|
|
if not settings.EMAIL_ENABLED:
|
|
return False
|
|
if not user or not user.email:
|
|
return False
|
|
|
|
subject_full = f"{settings.EMAIL_SUBJECT_PREFIX}{subject}"
|
|
body_txt = render_to_string(template_txt, context)
|
|
|
|
msg = EmailMultiAlternatives(
|
|
subject=subject_full,
|
|
body=body_txt,
|
|
from_email=settings.DEFAULT_FROM_EMAIL,
|
|
to=[user.email],
|
|
)
|
|
if template_html:
|
|
body_html = render_to_string(template_html, context)
|
|
msg.attach_alternative(body_html, "text/html")
|
|
|
|
msg.send(fail_silently=False)
|
|
return True
|