feat(email): SMTP mailer behind the EmailService seam (EMAIL_PROVIDER=smtp); Resend stays the hosted default (#1746)

SmtpEmailService (nodemailer 9.0.5, exact-pinned) behind the existing EmailService seam. Provider resolution: EMAIL_PROVIDER wins, else RESEND_API_KEY selects Resend (hosted byte-identical), else SMTP_HOST selects SMTP. From header is built exactly like the Resend service after #1956 (no 'via <app>', fromAddress honored, platform-sender retry). STARTTLS is required by default (requireTLS) with SMTP_REQUIRE_TLS=false as an explicit opt-out for a plaintext LAN relay. Docs, env examples and the generated extension registry updated.
This commit is contained in:
Jakob Wennberg
2026-08-30 11:54:47 +02:00
committed by GitHub
parent 8ec12fefc7
commit 523fba0419
21 changed files with 716 additions and 29 deletions
+2
View File
@@ -68,6 +68,7 @@
"next": "16.3.1",
"next-intl": "^4.13.2",
"next-themes": "^0.4.6",
"nodemailer": "9.0.5",
"pdf-lib": "^1.17.1",
"posthog-js": "^1.407.3",
"posthog-node": "^5.46.1",
@@ -94,6 +95,7 @@
"@types/js-yaml": "4.0.9",
"@types/mailparser": "^3.4.6",
"@types/node": "^20",
"@types/nodemailer": "8.0.1",
"@types/pg": "^8.20.0",
"@types/react": "^19",
"@types/react-dom": "^19",