package com.kevinolarte.resibenissa.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import java.util.Properties;
/**
* Configuración del servicio de envío de correos electrónicos.
*
* Esta clase define un {@link JavaMailSender} que se configura automáticamente
* con los datos definidos en el archivo {@code application.properties} o {@code application.yml}.
* Utiliza los servidores de Gmail como proveedor SMTP.
*
*
*
* Las credenciales y configuraciones sensibles se inyectan desde las propiedades:
*
* spring.mail.username
* spring.mail.password
*
*
*
* @return Bean de {@link JavaMailSender} listo para ser inyectado y utilizado en servicios.
*
* @author Kevin Olarte
*/
@Configuration
public class EmailConfiguration {
@Value("${spring.mail.username}")
private String username;
@Value("${spring.mail.password}")
private String password;
/**
* Crea e inicializa el {@link JavaMailSender} con configuración para SMTP (Gmail).
*
* @return Instancia de {@link JavaMailSender} configurada.
*/
@Bean
public JavaMailSender javaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);
mailSender.setUsername(username);
mailSender.setPassword(password);
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");
return mailSender;
}
}