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
Última atualização em: | 33526 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.