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