Only one mail transport can ever run, because the composition root names it directly. A second transport is unreachable wherever its code lives.
Current state: buildMailSender in cmd/alphone/mail.go:33 calls smtp.New unconditionally, and the only choice is whether an SMTP host is set. Settings are read once from the environment at boot. The sdk declares MailSenderConsumer, which hands a sender down to plugins, and no seam pointing the other way, although wireFieldProviders and wireCredentialProviders in cmd/alphone/run.go already collect from plugins that way.
Proposal: pick the transport from configuration first, and add the missing provider seam. A selector in the settings screen follows once settings move to a table.
Trigger: before a second transport ships.
Only one mail transport can ever run, because the composition root names it directly. A second transport is unreachable wherever its code lives.
Current state:
buildMailSenderincmd/alphone/mail.go:33callssmtp.Newunconditionally, and the only choice is whether an SMTP host is set. Settings are read once from the environment at boot. The sdk declaresMailSenderConsumer, which hands a sender down to plugins, and no seam pointing the other way, althoughwireFieldProvidersandwireCredentialProvidersincmd/alphone/run.goalready collect from plugins that way.Proposal: pick the transport from configuration first, and add the missing provider seam. A selector in the settings screen follows once settings move to a table.
Trigger: before a second transport ships.