Relays are many and each has its own API, so no vendor code belongs in the mailkit module, and no vendor transport should be maintained by core either.
Current state: mailkit/smtp is the only transport, and mailkit's go.mod requires an SMTP client and an SMTP mock in the main block. Nothing reaches a relay over HTTP.
Proposal: a transport may sit in the mailkit module only when its tests prove it correct offline, with no account and no credential. Every other transport is a plugin, owned by its author and listed on the marketplace, Resend first. The plugin implements the sender seam and hands it to the host.
Trigger: after #17 widens the seam and #15 settles how a plugin reaches a host.
Relays are many and each has its own API, so no vendor code belongs in the mailkit module, and no vendor transport should be maintained by core either.
Current state:
mailkit/smtpis the only transport, and mailkit's go.mod requires an SMTP client and an SMTP mock in the main block. Nothing reaches a relay over HTTP.Proposal: a transport may sit in the mailkit module only when its tests prove it correct offline, with no account and no credential. Every other transport is a plugin, owned by its author and listed on the marketplace, Resend first. The plugin implements the sender seam and hands it to the host.
Trigger: after #17 widens the seam and #15 settles how a plugin reaches a host.