En este artículo aprenderemos a enviar correos con una cuenta gmail desde nuestra aplicación spring boot, ¡En menos de 3 minutos!
Para comenzar, mediante maven, instalaremos la dependencia que nos proveera de las clases para el envío de email. Nos dirigimos a nuestro archivo pom.xml, añadiremos esta dependecia y compilaremos:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Ahora, nos dirigimos al archivo application.properties dónde añadiremos la configuración para el envío de emails:
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.protocol=smtp
spring.mail.username=tucorreo@gmail.com
spring.mail.password=lacontraseñadetucorreo
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.quitwait=false
Por último, crearemos un servicio, que será lo utilizaremos para enviar correos desde nuestra aplicación spring, SendEmail.java:
@Service
public class EnvioEmail {
//Importante hacer la inyección de dependencia de JavaMailSender:
@Autowired
private JavaMailSender mailSender;
//Pasamos por parametro: destinatario, asunto y el mensaje
public void sendEmail(String to, String subject, String content) {
SimpleMailMessage email = new SimpleMailMessage();
email.setTo(to);
email.setSubject(subject);
email.setText(content);
mailSender.send(email);
}
}
De ésta forma, ya tendríamos listo nuestro servicio de envios de correos.
Un ejemplo de uso de esta funcionalidad, podría ser, enviar un mensaje a todos los clientes de la aplicación, y lo podríamos hacer de esta forma:
public void sendEmail(List<Clients> listClients, String subject, String content) {
for (Clients c : listClients)
{
SimpleMailMessage email = new SimpleMailMessage();
//recorremos la lista y enviamos a cada cliente el mismo correo
email.setTo(c.getEmail());
email.setSubject(subject);
email.setText(content);
mailSender.send(email);
}
}
Modificando el parámetro to, por una lista de clientes que se recorrerá y obtendremos el email de cada cliente.