Escolha uma Página

Enviar email usando Spring e Gmail

Escrito por Alisson

outubro 18, 2023

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.

Você pode gostar…

Parse local date to UTC

Parse local date to UTC

Precisa converter Local date para UTC. private static final DateTimeFormatter FORMATTER_ZONED =...

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *