Nesse artigo vamos falar sobre como enviar email utilizando Spring Mail e Gmail.
A primeira etapa consiste em configurar o gmail para que possa enviar os emails utilizando o Gmail.
Configurando o Gmail
No canto superior direito clicar em Configurações > Todas Configurações > Redirecionamento e POP/IMAP. Habilitar POP e IMAP.

Feito essa configuração, temos que ativar acesso por app na conta do gmail.
Para ativar acesso por app temos que ativar o Segundo Fator de Autenticação, que fica no canto superiir direito em Conta do Google > Gerenciar Conta do Google > Segurança.
Tendo ativado o segundo fator de autenticação, entrar na configuração e entrar em Senhas de app e criar um novo acesso.

Agora estamos com a nossa conta do Gmail configurado para enviar emails. Então agora vamos colocar a mão no código.
Configurando o Spring
A primeira configração que precisamos fazer é colocar as dependências do spring mail e thymeleaf no pom da aplicação.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
A segunda configuração que precisamos fazer é configurar o Application.yml.
spring:
mail:
host: smtp.gmail.com
port: 587
username: EMAIL_DO_GMAIL
password: SENHA_DO_APP_GERADA_NA_ETAPA_ANTERIOR
properties:
mail:
smtp:
starttls:
enable: true
auth: true
A terceira etapa é criar o template html na pasta resourses da aplicação.
Temos que criar uma pasta templates dentro da pasta resources e dentro da pasta templates temos que criar o nosso template-email.html.
<!DOCTYPE html>
<html>
<head>
<title>Template Title</title>
</head>
<body>
<p th:text="${message}">Default message</p>
<div th:utext="${html}"></div>
</body>
</html>
No html acima é possível ver uma tag P com th:text=”${message}” essa config serve para subistituirmos o valor de mensagem dinamicamente.
É possível ver na tag DIV com th:utext=”${html}” essa config serve para injetarmos um código html dentro da div.
Agora vamos fazer a nossa classe de envio de email.
import jakarta.mail.MessagingException;
import lombok.RequiredArgsConstructor;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
@Component
@RequiredArgsConstructor
public class SendMail {
private final JavaMailSender mailSender;
private final TemplateEngine templateEngine;
public void send() {
final var contextLine = new Context();
contextLine.setVariable("message", "TEST MESSAGE");
contextLine.setVariable("html",
"<img src=\"logo.jpg\" alt=\"logo\" width=\"500\" height=\"600\">");
final var htmlContent = templateEngine.process("template-email", contextLine);
final var mimeMessage = mailSender.createMimeMessage();
final var helper = new MimeMessageHelper(mimeMessage, "UTF-8");
try {
helper.setTo("to@email.com");
helper.setSubject("email subject");
helper.setText(htmlContent, true);
mailSender.send(mimeMessage);
System.out.println("Mail sent successfully");
} catch (MailException | MessagingException e) {
System.out.println("Fail to sent mail " + e.getMessage());
}
}
}
Com esse breve tutorial é possível enviar emails utilizando Spring e Gmail.
0 comentários