template-saas/docs/02-integraciones/INT-003-email.md
rckrdmrd 50a821a415
Some checks failed
CI / Backend CI (push) Has been cancelled
CI / Frontend CI (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / CI Summary (push) Has been cancelled
[SIMCO-V38] feat: Actualizar a SIMCO v3.8.0
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8
- Actualizaciones de configuracion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:08 -06:00

135 lines
3.0 KiB
Markdown

---
id: "INT-003"
title: "Integracion Email Providers"
type: "Integration"
status: "Implemented"
priority: "P0"
provider: "SendGrid/SES/SMTP"
category: "Notifications"
multi_tenant: true
version: "1.0.0"
created_date: "2026-01-07"
updated_date: "2026-01-10"
---
# INT-003: Email Integration
## Metadata
| Campo | Valor |
|-------|-------|
| Codigo | INT-003 |
| Proveedor | SendGrid, AWS SES, SMTP |
| Tipo | Notificaciones |
| Estado | Implementado |
| Multi-tenant | Si |
| Fecha integracion | 2026-01-10 |
---
**Documentacion completa:** Ver [SAAS-013-email.md](../01-modulos/SAAS-013-email.md)
## Resumen
Integracion multi-proveedor para envio de correos electronicos.
## Proveedores Soportados
- SendGrid
- AWS SES
- SMTP generico
## Caracteristicas
- Configuracion por variables de entorno
- Templates con MJML
- Fallback entre proveedores
- Tracking de envios (con provider support)
## Configuracion
```env
# SendGrid
SENDGRID_API_KEY=SG.xxx
EMAIL_FROM=noreply@example.com
# AWS SES
AWS_SES_REGION=us-east-1
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
# SMTP
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=...
SMTP_PASS=...
```
## Rate Limits
| Limite | Valor | Accion si excede |
|--------|-------|------------------|
| Requests/seg | 100 (SendGrid Free), 14 (SES) | Retry con backoff exponencial |
| Emails/dia | 100 (SendGrid Free), 50000 (SES) | Cola de espera |
## Manejo de Errores
| Codigo | Descripcion | Accion |
|--------|-------------|--------|
| 400 | Bad Request | Log + no retry |
| 401 | Unauthorized | Renovar credenciales |
| 429 | Rate Limited | Backoff exponencial |
| 500 | Server Error | Retry con backoff |
## Fallbacks
### Estrategia Email Fallback
| Escenario | Estrategia |
|-----------|------------|
| SendGrid no disponible | Fallback automatico a AWS SES |
| AWS SES no disponible | Fallback a SMTP generico |
| Todos fallan | Encolar en BullMQ para retry posterior |
| Email rechazado | Log + no retry (direccion invalida) |
### Orden de Providers
```typescript
// Configuracion por prioridad
const providers = [
{ name: 'sendgrid', priority: 1 },
{ name: 'ses', priority: 2 },
{ name: 'smtp', priority: 3 }
];
```
### Circuit Breaker
- Umbral apertura: 5 fallos consecutivos por provider
- Timeout semi-abierto: 60 segundos
- Fallback: Siguiente provider en prioridad
## Multi-tenant
- Credenciales: Por tenant (cada tenant puede configurar su proveedor de email)
- Configuracion: Por tenant via tenant_config
- Aislamiento: Prefijo tenant_id en todas las operaciones
## Testing
### Sandbox/Test Mode
- SendGrid: Usar modo sandbox para no enviar emails reales
- AWS SES: Sandbox mode con direcciones verificadas
- Fixtures disponibles para testing unitario
## Monitoreo
| Metrica | Descripcion | Alerta |
|---------|-------------|--------|
| Latencia | Tiempo de respuesta | >2s |
| Errores | Tasa de errores | >1% |
| Disponibilidad | Uptime del servicio | <99.9% |
## Referencias
- Modulo relacionado: SAAS-013-email.md
---
**Ultima actualizacion:** 2026-01-10
**Version:** 1.0.0