risk-email es una herramienta desarrollada en Java para el envío de e-mail, diseñada como parte del ecosistema risk e integrada con su módulo de Mensajería.
Este servicio permite el envío de correos electrónicos mediante el protocolo SMTP, siendo ideal para notificaciones de diferentes tipos de negocios.
- 📤 Envío de correos electrónicos a través de múltiples servidores SMTP.
- 🗃️ Lectura de mensajes pendientes desde base de datos Oracle.
- 🧩 Configuración desacoplada mediante archivo YAML externo.
- Java 17 o superior
- Maven 3.6+
- Archivo de credenciales para Firebase (
.json) - Acceso a un servidor SMTP válido
- Base de datos Oracle con la tabla:
t_correos: contiene los correos pendientes de envío.
risk-email/
├── config/
│ ├── risk-email.yml.example # Archivo de configuración ejemplo
│ └── risk-email.yml # Archivo real (no versionado)
├── src/ # Código fuente
├── target/ # Archivos compilados y .jar
├── pom.xml # Configuración Maven
├── LICENSE
└── README.md
El archivo risk-email.yml contiene los parámetros necesarios para la conexión a base de datos y configuración a múltiples servidores SMTP.
cp config/risk-email.yml.example config/risk-email.ymlEjemplo de configuración:
# Conexión a la base de datos
datasource:
serverName: serverName.com.py
port: 1521
serviceName: serviceName
user: user
password: password
maximumPoolSize: 50
minimumIdle: 5
idleTimeout: 30000
connectionTimeout: 10000
# Configuraciones de negocio para el envío de correos
email:
- nombre: MAIL-OTP
clasificacion: OTP # Clasificacion: OTP, AVISO, PROMOCION (u otros). Opcional
cantidadMaximaPorLote: 100 # Cantidad maxima de SMS a enviar por lote. Opcional. Por defecto 100
modoEnvioLote: secuencial_espaciado # Modo de envío: paralelo, paralelo_espaciado, secuencial_espaciado, secuencial_espaciado_async
intervaloEntreLotesMs: 10000 # Tiempo de espera entre lotes de SMS a enviar (en milisegundos)
maximoIntentos: 5 # Número máximo de intentos de envío permitidos de SMS. Opcional. Por defecto 5
# Conexion al Gateway
smtp:
host: smtp.gmail.com
puerto: 587
usuario: miusuario@gmail.com
clave: app-password
from: noreply@miempresa.com
sendDelayMs: 50 # Tiempo de espera entre envíos consecutivos de SMS (en milisegundos). Util para cumplir con límites del proveedor SMTP o evitar sobrecarga. Por defecto 500
⚠️ Importante: No subas el archivorisk-email.ymlreal al repositorio. Usá solorisk-email.yml.example.
mvn clean installEl JAR generado estará en:
target/risk-email.jar
Para ejecutar el JAR:
java -Xms500M -Xmx500M -XX:MaxDirectMemorySize=250M -server -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=500 -jar target/risk-email.jarPor defecto, busca el archivo config/risk-email.yml.
También podés especificar otro archivo:
java -Xms500M -Xmx500M -XX:MaxDirectMemorySize=250M -server -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=500 -jar target/risk-email.jar path/a/otro-risk-email.ymlPodés agregar mensajes de prueba en la tabla t_correos de tu base de datos y verificar que se procesen correctamente, en cuanto al envío.
- Se utiliza Log4j2 para los logs.
- La configuración puede personalizarse en el archivo
log4j2.xml.
¿Encontraste un error o querés proponer una mejora?
Abrí un issue para comentarlo.
Las contribuciones son bienvenidas:
- Creá una rama con tus cambios.
- Enviá un pull request explicando qué mejoras hiciste.
¡Gracias por contribuir a risk-email!
Este proyecto está bajo la licencia MIT. Ver el archivo LICENSE.
MIT © 2025 – DamyGenius