Files

1.7 KiB

Emails

Go html/template files, ready to replace internal/infrastructure/mailer/templates/:

  • source/emails/verification.html uses {{.Host}} and {{.VerificationCode}}, linking to {{.Host}}/register/validate?c={{.VerificationCode}}.

  • source/emails/password-reset.html uses {{.Host}}, {{.VerificationCode}} and {{.Email}}, linking to {{.Host}}/register/reset/validate?c={{.VerificationCode}}&email={{.Email}}.

  • source/emails/invitation.html uses {{.Host}}, {{.VerificationCode}}, {{.Email}} and {{.InvitedBy}}, linking to {{.Host}}/invite/accept?c={{.VerificationCode}}. {{.Email}} is the invited address, shown in the body only. {{.InvitedBy}} is the inviter's display name, or their username when they have none. The subject is "{{.InvitedBy}} invited you to RenewCMS". The invite expires in 3 days and works once.

Previews: source/RenewCMS Emails.dc.html.

Transactional emails

Three Go html/template files: emails/verification.html, emails/password-reset.html and emails/invitation.html . They use a table layout with inline CSS and a 600 px maximum width. The button is bulletproof: a colored table cell plus a padded link, so it survives Outlook. Each has a plain-URL fallback, a hidden preheader, and prefers-color-scheme overrides for clients that support them. The mark is live text in a black cell rather than an image, so it shows even when images are blocked. Previews below use example values.

Suggested subjects are "Verify your RenewCMS account", "Reset your RenewCMS password" and " invited you to RenewCMS", where .InvitedBy is the inviter's display name or username. html/template escapes the .Email value for the query string in the reset link (the @ becomes %40), and the confirm route reads it back decoded.