expephalon/core/helpers/mail.py

36 lines
No EOL
1.3 KiB
Python

from django.conf import settings
from core.modules.mail import providers, templates
from core.tasks.mail import send_mail as send_mail_task
from core.exceptions.mail import NoSuchTemplate
from dbsettings.functions import getValue
import os.path
def get_provider_by_name(name, fallback=True):
return providers.get(name, None) or providers["smtp"]
def get_default_provider(fallback=True):
return get_provider_by_name(getValue("core.email.provider", "smtp"), fallback)
def send_mail(provider=get_default_provider(), **kwargs):
provider = get_provider_by_name(provider) if type(provider) == str else provider
return send_mail_task.delay(provider, **kwargs)
def simple_send_mail(subject, content, recipients, cc=[], bcc=[], headers={}):
return send_mail(subject=subject, content=content, recipients=recipients, cc=cc, bcc=bcc, headers=headers)
def get_template(template_name, format="txt", **kwargs):
try:
template = templates[template_name][format]
except KeyError:
raise NoSuchTemplate(f"No email template called {template_name} of format {format} loaded")
with open(template, "r") as templatefile:
templatetext = templatefile.read()
for key, value in kwargs.items():
templatetext = templatetext.replace('{§%s§}' % key, value)
return templatetext