feat: introduce Resend email provider and add admin email configuration page.

This commit is contained in:
2025-12-12 12:43:29 +01:00
parent ad5a880219
commit 54cf1ff276
16 changed files with 5119 additions and 56 deletions

View File

@@ -0,0 +1,37 @@
# Integrazione Supporto Resend per Invio Email
## Obiettivo
Abilitare l'invio di email tramite servizi terzi (Resend) oltre al già presente SMTP, con configurazione via interfaccia grafica.
## Stato Attuale
- Backend: `SmtpEmailSender` gestisce solo SMTP.
- Frontend: `SettingsPage` gestisce solo campi SMTP.
- DTO: `SmtpConfigDto` limitato a SMTP.
## Piano di Lavoro
1. **Backend DTO**: Aggiornare `SmtpConfigDto` con campi `Provider` e `ResendApiKey`.
2. **Backend Controller**: Aggiornare `CommunicationsController` per leggere/salvare le nuove configurazioni (`EMAIL_PROVIDER`, `RESEND_API_KEY`).
3. **Backend Service**: Modificare `SmtpEmailSender` (o rinominarlo in `UnifiedEmailSender`) per supportare la logica condizionale (SMTP vs Resend). Implementare l'invio tramite HTTP Client per Resend.
4. **Frontend Service**: Aggiornare le definizioni di tipo TypeScript.
5. **Frontend UI**: Modificare `SettingsPage` per aggiungere un selettore di provider (SMTP/Resend) e mostrare i campi pertinenti dinamicamente.
6. **Traduzioni**: Aggiungere le nuove etichette.
## Dettagli Tecnici
- **API Resend**: Richiesta POST a `https://api.resend.com/emails` con Bearer Token.
- **Provider Enum**: "smtp", "resend".
- **Defaut**: SMTP per retrocompatibilità.
## Avanzamento
- [x] Backend DTO Update (`SmtpConfigDto`)
- [x] Backend Controller Update (`CommunicationsController`)
- [x] Backend Service Logic (`SmtpEmailSender` now handles Resend via HTTP)
- [x] Frontend Types Update
- [x] Frontend UI Update (`SettingsPage.tsx` with Provider selector)
- [x] Dependencies (Added `Microsoft.Extensions.Http` to Infrastructure)
## Note Finali
- L'integrazione supporta ora la selezione dinamica tra SMTP e Resend.
- La configurazione viene salvata su database (`EMAIL_PROVIDER`, `RESEND_API_KEY`).
- Il backend utilizza `IHttpClientFactory` per le chiamate API verso Resend.
- UI aggiornata per mostrare campi condizionali.