Como configurar projetos Spring Boot para enviar e-mail

Neste post vou mostrar como você pode configurar o envio de e-mails em projetos Spring Boot

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Spring Boot - TUTORIAL

Última atualização em: | 32726 Visualizações

Certamente você já precisou fazer que sua aplicação envie e-mails, considerando que você utilize projetos em Spring Boot, isso é relativamente fácil de fazer.

Primeiro adicione a dependência necessária para o Spring Boot.

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

Após adicionar a depêndencia no projeto, adicione as configurações no arquivo application.properties, veja:

#spring-boot-starter-mail properties
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=<seu-email@gmail.com>
spring.mail.password=<sua-senha>
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.ssl.enable=false
spring.mail.test-connection=true

Note que onde precisa adicionar um e-mail e senha válido para que seja possível conectar em sua conta. Caso conecte no Gmail precisa liberar acesso a aplicativos menos seguros em sua conta.



Por fim, crie o controller para testar o envio de e-mails:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmailController {

    @Autowired private JavaMailSender mailSender;

    @RequestMapping(path = "/email-send", method = RequestMethod.GET)
    public String sendMail() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setText("Hello from Spring Boot Application");
        message.setTo("wolmirgarbin@gmail.com");
        message.setFrom("wolmirgarbin@gmail.com");

        try {
            mailSender.send(message);
            return "Email enviado com sucesso!";
        } catch (Exception e) {
            e.printStackTrace();
            return "Erro ao enviar email.";
        }
    }
}

Agora basta rodar a aplicação e chamar o método via url: http://localhost:8080/email-send.

Note que o código acima envia o e-mail em texto puro apenas.

Spring Boot send mail HTML

Para enviar os e-mails em formato HTML com Spring Boot, basta alterar a forma de envio.

O código de exemplo demonstra como pode fazer isso:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.internet.MimeMessage;

@RestController
public class EmailController {

    @Autowired private JavaMailSender mailSender;

    @RequestMapping(path = "/email-send", method = RequestMethod.GET)
    public String sendMail() {
        try {
            MimeMessage mail = mailSender.createMimeMessage();

            MimeMessageHelper helper = new MimeMessageHelper( mail );
            helper.setTo( "wolmirgarbin@gmail.com" );
            helper.setSubject( "Teste Envio de e-mail" );
            helper.setText("<p>Hello from Spring Boot Application</p>", true);
            mailSender.send(mail);

            return "OK";
        } catch (Exception e) {
            e.printStackTrace();
            return "Erro ao enviar e-mail";
        }
    }
}

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!