feat: add scheduler and mail outbox

SMTP adapter with TLS and a fake, outbox with retries, backoff, rate limit and restart safety, scheduler tick with job-run records started by gunicorn, and a send_test_mail command.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N3t4WL7bd9bdHHNjEsxzqC
This commit is contained in:
2026-10-18 09:18:42 +02:00
co-authored by Claude Sonnet 5.5
parent 0dc079a8ac
commit 20510a73e5
40 changed files with 1315 additions and 6 deletions
+15
View File
@@ -0,0 +1,15 @@
"""Mail adapter: the only code that talks SMTP (AD-1)."""
from .base import Mailer, MailError, MailMessage, MailRejected, MailUnavailable
from .fake import FakeMailer
from .smtp import SmtpMailer
__all__ = [
"FakeMailer",
"MailError",
"MailMessage",
"MailRejected",
"MailUnavailable",
"Mailer",
"SmtpMailer",
]