From 62c13eb17a4945340e4ba8f009cdb6fc14e40a91 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Tue, 13 Jan 2026 05:24:40 +0100 Subject: [PATCH] Experimental change that adds configurable SMTP encryption mode --- .../BreCal/services/schedule_routines.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/server/BreCal/services/schedule_routines.py b/src/server/BreCal/services/schedule_routines.py index 81f62a4..c452d45 100644 --- a/src/server/BreCal/services/schedule_routines.py +++ b/src/server/BreCal/services/schedule_routines.py @@ -110,11 +110,23 @@ def SendEmails(email_dict): pooledConnection = getPoolConnection() commands = pydapper.using(pooledConnection) - conn = smtplib.SMTP(defs.email_credentials["server"], defs.email_credentials["port"]) + encryption = defs.email_credentials.get("encryption") or defs.email_credentials.get("encryption_method") or "STARTTLS" + encryption_norm = str(encryption).strip().upper().replace(" ", "").replace("_", "").replace("-", "") + if encryption_norm in ("SSLTLS", "SSL", "TLS"): + conn = smtplib.SMTP_SSL(defs.email_credentials["server"], defs.email_credentials["port"]) + else: + conn = smtplib.SMTP(defs.email_credentials["server"], defs.email_credentials["port"]) conn.set_debuglevel(1) # set this to 0 to disable debug output to log conn.ehlo() - conn.starttls() - conn.ehlo() + if encryption_norm in ("STARTTLS", "STARTSSL"): + conn.starttls() + conn.ehlo() + elif encryption_norm in ("NONE", "NO", "DISABLE"): + pass + elif encryption_norm not in ("SSLTLS", "SSL", "TLS"): + logging.warning("Unknown email encryption '%s'; defaulting to STARTTLS.", encryption) + conn.starttls() + conn.ehlo() conn.login(defs.email_credentials["sender"], defs.email_credentials["password_send"]) current_path = os.path.dirname(os.path.abspath(__file__))