expephalon/core/helpers/mail.py
Klaus-Uwe Mitterer 27fe413d11 Some refactoring to get cron running
Moved dbsettings documentation to Gitlab wiki
2020-05-24 17:44:27 +02:00

37 lines
No EOL
1.3 KiB
Python

from django.conf import settings
from core.exceptions.mail import NoSuchTemplate
from dbsettings.functions import getValue
import os.path
def get_provider_by_name(name, fallback=True):
from core.modules.mail import providers
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):
from core.tasks.mail import send_mail as send_mail_task
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):
from core.modules.mail import templates
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