golib/net/formmailer
AJ ONeal b77872623a
feat(formmailer)!: replace FormFields struct with ordered []Field
Form inputs are now declared as an ordered slice with Kind-driven
validation (KindText, KindEmail, KindPhone, KindMessage). Arbitrary
input names are fine — callers pick the Label shown in the email
body and the FormName of the HTML input. Per-field MaxLen and
Required overrides supported; defaults come from Kind.

Exactly one KindEmail entry is required (used for Reply-To, Subject
{.Email} substitution, and the MX check); misconfiguration is
detected at first request and returns 500.

Email body, log line, and validation now iterate Fields in order, so
the email preserves the form's declared layout.

BREAKING: FormMailer.Fields is now []Field, not FormFields struct.
Callers must migrate to the slice form.
2026-04-20 19:45:53 -06:00
..