51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
from email.mime.text import MIMEText
|
|
from email.mime.multipart import MIMEMultipart
|
|
from modules.module_registry import ModuleRegistry as mr
|
|
import smtplib
|
|
|
|
import Web.modules.database.settings as cfg
|
|
|
|
|
|
def _build_smtp_client():
|
|
smtp = smtplib.SMTP(cfg.EMAIL_SMTP_HOST, cfg.EMAIL_SMTP_PORT, timeout=cfg.EMAIL_TIMEOUT_SECONDS)
|
|
smtp.ehlo()
|
|
if cfg.EMAIL_USE_TLS:
|
|
smtp.starttls()
|
|
smtp.ehlo()
|
|
if cfg.EMAIL_USERNAME:
|
|
smtp.login(cfg.EMAIL_USERNAME, cfg.EMAIL_PASSWORD or '')
|
|
return smtp
|
|
|
|
def send(email: list, subject: str, note: str, sender: str) -> bool:
|
|
"""
|
|
Sends the email with the link to the Clients
|
|
|
|
Input:
|
|
- email: Email list of all the addresses to send the link to ["","",""]
|
|
- subject: Subject of the email
|
|
- note: Note that is send with the Emails
|
|
|
|
Output:
|
|
- bool: true if the sending worked and false if it didnt
|
|
"""
|
|
if not mr.registry.is_enabled('mail'):
|
|
return False
|
|
else:
|
|
msg = MIMEMultipart()
|
|
msg['Subject'] = subject
|
|
msg['From'] = sender or cfg.EMAIL_FROM_ADDRESS or cfg.EMAIL_USERNAME
|
|
msg['To'] = ', '.join(email) if isinstance(email, (list, tuple)) else str(email)
|
|
msg.attach(MIMEText(note))
|
|
smtp = None
|
|
try:
|
|
smtp = _build_smtp_client()
|
|
smtp.sendmail(from_addr=msg['From'], to_addrs=email, msg=msg.as_string())
|
|
return True
|
|
except Exception:
|
|
return False
|
|
finally:
|
|
try:
|
|
if smtp:
|
|
smtp.quit()
|
|
except Exception:
|
|
pass |