From c061fb108567fb7d4ee86cf6d2b2abb0c2633d87 Mon Sep 17 00:00:00 2001 From: Chris Fulljames Date: Tue, 10 Mar 2026 20:07:35 -0400 Subject: [PATCH] Add email for import queue --- src/littlesongplace/datadir.py | 3 +++ src/littlesongplace/dreams_importer.py | 8 +++++++- src/littlesongplace/mail.py | 23 +++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/littlesongplace/mail.py diff --git a/src/littlesongplace/datadir.py b/src/littlesongplace/datadir.py index b9dfcaa..4aaf7e1 100644 --- a/src/littlesongplace/datadir.py +++ b/src/littlesongplace/datadir.py @@ -34,3 +34,6 @@ def get_vapid_public_key_path(): def get_vapid_private_key_path(): return _data_dir / "vapid-private.key" +def get_email_pass_path(): + return _data_dir / "email-pass.txt" + diff --git a/src/littlesongplace/dreams_importer.py b/src/littlesongplace/dreams_importer.py index 923b396..01a950a 100644 --- a/src/littlesongplace/dreams_importer.py +++ b/src/littlesongplace/dreams_importer.py @@ -3,7 +3,7 @@ from datetime import datetime, timezone from flask import abort, Blueprint, current_app, get_flashed_messages, session, \ redirect, render_template, request -from . import auth, db +from . import auth, db, mail from .logutils import flash_and_log bp = Blueprint("dreams-importer", __name__, url_prefix="/dreams-importer") @@ -100,6 +100,12 @@ def add_to_queue(songid, indreams_url, duration, fade_out): current_app.logger.info(f"dreams_importer: Added {queueid} to queue") flash_and_log(f"Queued for import from Dreams: {indreams_url}") + + mail.send( + "mail@littlesong.place", # To self + "Song Queued for Import", + f"{session['username']} enqueued a song for import" + ) return queueid diff --git a/src/littlesongplace/mail.py b/src/littlesongplace/mail.py new file mode 100644 index 0000000..50b1c22 --- /dev/null +++ b/src/littlesongplace/mail.py @@ -0,0 +1,23 @@ +from . import datadir + +import smtplib +from email.message import EmailMessage +from email.utils import make_msgid + +from_addr = "mail@littlesong.place" + +def send(to_addrs, subject, body): + with open(datadir.get_email_pass_path(), "r") as epfile: + pass = epfile.read().strip() + + msg = EmailMessage() + msg["From"] = from_addr + msg["To"] = to_addrs + msg["Message-ID"] = make_msgid(domain="littlesong.place") + msg["Subject"] = subject + msg.set_content(body) + + with smtplib.SMTP_SSL("smtp.ionos.com") as smtp: + smtp.login("mail@littlesong.place", pass) + smtp.send_message(msg) + -- 2.39.5