diff --git a/Web/app.py b/Web/app.py
index 1c45b66..29e3d45 100755
--- a/Web/app.py
+++ b/Web/app.py
@@ -48,7 +48,7 @@ import Web.modules.log.audit_log as al
import push_notifications as pn
import Web.modules.inventarsystem.pdf_export as pdf_export
import Web.modules.inventarsystem.excel_export as excel_export
-from Web.modules.emailservice.email import send
+from Web.modules.emailservice.email import send, send_pdf
import datetime
from apscheduler.schedulers.background import BackgroundScheduler
from bson.objectid import ObjectId, InvalidId
@@ -5543,7 +5543,7 @@ def student_card_single_barcode_download(card_id):
if not cfg.MODULES.is_enabled('mail'):
flash('Das E-Mail-Add-on ist deaktiviert. Der Ausweis kann weiterhin als PDF heruntergeladen werden.', 'warning')
return redirect(url_for('student_cards_admin'))
- sent = send(
+ sent = send_pdf(
recipient_email,
f'Bibliotheksausweis {card["AusweisId"]}',
f'Anbei erhalten Sie den Bibliotheksausweis für {card.get("SchülerName", "")} als PDF.',
@@ -9153,7 +9153,7 @@ def admin_audit_export_pdf_official():
flash('Das E-Mail-Add-on ist deaktiviert. Der Auditbericht kann weiterhin als PDF heruntergeladen werden.', 'warning')
return redirect(url_for('admin_audit_dashboard'))
filename = f'audit-official-report-{datetime.datetime.now(ZoneInfo("Europe/Berlin")).strftime("%Y%m%d-%H%M%S")}.pdf'
- sent = send(
+ sent = send_pdf(
recipient_email,
'Amtlicher Auditbericht',
'Anbei erhalten Sie den aktuellen amtlichen Auditbericht des Inventarsystems als PDF.',
@@ -9549,7 +9549,7 @@ def admin_create_invoice(borrow_id):
if not cfg.MODULES.is_enabled('mail'):
flash('Das E-Mail-Add-on ist deaktiviert. Die PDF-Rechnung kann weiterhin heruntergeladen werden.', 'warning')
return redirect(url_for('admin_borrowings'))
- sent = send(
+ sent = send_pdf(
recipient_email,
f'Rechnung {invoice_number} - {item_name}',
f'Anbei erhalten Sie die Rechnung {invoice_number} zum Element {item_name}.',
diff --git a/Web/modules/emailservice/email.py b/Web/modules/emailservice/email.py
index 892fb36..53322e0 100644
--- a/Web/modules/emailservice/email.py
+++ b/Web/modules/emailservice/email.py
@@ -3,7 +3,7 @@ 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
@@ -28,89 +28,70 @@ def _normalize_recipients(email: list | str) -> list[str]:
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]
+def _send_message(email: list | str, subject: str, note: str, sender: str, attachment=None) -> bool:
+ """Send a plain/HTML message, optionally with one PDF attachment."""
+ if not cfg.MODULES.is_enabled("mail"):
+ print("Debug: Module not enabled")
+ return False
- if attachments is None:
- attachments = []
+ recipients = _normalize_recipients(email)
+ if not recipients:
+ return False
- 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"
- )
+ body_message = note
- HTML_SIGNATURE = """
-
-
|
- Mit freundlichen Grüßen, -Ihr Invario Team -
- Invario UG Mit freundlichen Grüßen +Automatisierter Email Verteiler für die Schule: {cfg.get_school_info().get("name")} + Invario UG |
{html_safe_text}
{HTML_SIGNATURE}" + text_content = f"{body_message}\n\nMit freundlichen Grüßen\n{sender}\n" + + html_content = f""" + + +{body_message}
+