36 lines
No EOL
1.3 KiB
Python
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 |