Email / SMTP notification channel #80
Labels
No labels
area:ai
area:ci-cd
area:notifications
area:observability
area:public-pages
backlog
bug
duplicate
enhancement
help wanted
invalid
question
type:decision
type:feature
type:infra
type:maintenance
type:security
v1.0.1
v1.1.0
v1.2.0
v1.3.0
v2.0.0
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/WeatherBot#80
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The one universal channel that's absent: you have chat, push, SMS, and webhooks, but not plain email — the lowest-friction way to loop in a non-technical household member or an archival inbox. Drops cleanly into the one-file-per-notifier pattern (confirmed: no
smtp/mailer code exists — the onlyemailreferences are the OIDC user-email claim). Missed because the owner lives in Discord/Matrix/push. Effort S, value High.Filed from the 2026-07-17 codebase audit (
docs/.internal/report-2026-07-17.md), finding I-10.Done in #101 (merged). New
emailchannel type (migration 0021,ALTER TYPE channeltype ADD VALUE) with an SMTP notifier built through the shared formatter, sending via stdlibsmtpliboffloaded withasyncio.to_thread. SMTP failures classify into the Transient/PermanentDeliveryErrortaxonomy so the outbox retries them; recipient addresses are redacted for non-managers.EmailConfigvalidation + a recipients field in the channels UI. GlobalSMTP_*settings (blankSMTP_HOSTdisables it).