Mailing subsystem
The Mailing module centralises bulk and transactional email.
Building blocks
A mailer selects the transport and credentials: SMTP, SendGrid, or a configured OAuth service. It can be marked active or development-only.
A sender supplies the display name and email address.
A template supplies reusable subject and body markup.
A transactional definition binds a domain action and scope to a mailer, sender, template, recipient rules, and optional deeplink target.
A mailing is composed content with recipients, selections, attachments, queue state, and send timestamps.
A distribution list can send a transactional definition to selected users manually or on configured weekdays, time, and trigger conditions.
Domain modules define action and recipient enums. Room, Equipment, Run, Scheduler, and other services pass template variables into the shared builder. Messages are queued and delivered by worker commands; the email-message and event views provide an audit trail.
After changing a transactional definition, send a preview and verify links and recipient expansion before enabling an automatic distribution list. Never place transport secrets in documentation or a shared global configuration file.