from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import smtplib
import time
import os
import Web.modules.database.settings as cfg
def _build_smtp_client():
smtp = smtplib.SMTP(
"mail.invario-software.de",
587,
timeout=10,
)
smtp.ehlo()
if True:
smtp.starttls()
smtp.ehlo()
smtp.login("no-reply@invario-software.de", "eSpage,65,{")
return smtp
def _normalize_recipients(email: list | str) -> list[str]:
if isinstance(email, str):
email = email.replace(';', ',').split(',')
return [str(recipient).strip() for recipient in (email or []) if str(recipient).strip()]
def send(
email: list | str,
subject: str,
text_body: str,
html_body: str = None,
attachments: list = None
) -> bool:
"""Sends the email with Plain Text, HTML, and optional File Attachments support."""
if isinstance(email, str):
email = [email]
if attachments is None:
attachments = []
TEXT_SIGNATURE = (
"\n\n--\n"
"Mit freundlichen Grüßen\n"
"Ihr Invario Team\n\n"
"Invario UG\n"
"Am Sportplatz 10\n"
"83052 Bruckmühl"
)
HTML_SIGNATURE = """
|
Mit freundlichen Grüßen, Ihr Invario Team
Invario UG |
{html_safe_text}
{HTML_SIGNATURE}" mails_per_second = 10 interval = 1.0 / mails_per_second smtp = None try: smtp = _build_smtp_client() for i, recipient in enumerate(email): start_time = time.time() # Root message structure for email with attachments msg = MIMEMultipart("mixed") msg["Subject"] = subject msg["From"] = "Invario Team