feat(email): Resend as primary provider (prod SMTP cred is dead) - #448
Merged
Conversation
Live check 2026-09-05 from the box: the Brevo relay answers "Login denied" to the deployed EMAIL_USER/PASS, so every verification code, password reset and contact mail silently failed at send time. The fleet standard is the shared Resend key (5 apps); evig now prefers Resend when RESEND_API_KEY is set, keeps Listmonk as explicit opt-in and SMTP as fallback. Sender follows the surf/vitareba convention (evig@fleetcrown.orangecat.ch) since only fleetcrown.orangecat.ch is verified in the Resend account. Diagnostics endpoint reports the new provider. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Live-probed from bitbaum: the Brevo SMTP credential in evig prod answers Login denied — email transport code ships fine (bundled nodemailer, network OK) but auth fails, so registration codes, password resets and contact forms have been silently dying at send. The shared fleet
RESEND_API_KEYwas live-verified (accepted a send fromfleetcrown.orangecat.ch). This PR adds aresendprovider (plain fetch, one endpoint, no new dep) preferred whenever the key is set; Listmonk stays explicit opt-in, SMTP stays as fallback. After merge+deploy I will setRESEND_API_KEYin/opt/evig/app/.env, restart, and prove delivery through the admin diagnostics endpoint.🤖 Generated with Claude Code