Esta técnica aborda o envio de e-mails com suporte a conteúdo HTML e anexos utilizando a biblioteca spring-boot-starter-mail no Spring Boot. A abordagem é recomendada devido à transição para Jakarta EE no Spring Boot 3, que substitui javax.mail por jakarta.mail, facilitando a integração nativa.
Para configurar, adicione a seguinte dependência Maven ao projeto:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
A seguir, um exemplo ilustrativo de uma classe que envia e-mails simples, HTML e com anexos, com nomes de classes e métodos alterados para mostrar uma estrutura alternativa.
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import java.io.File;
import java.util.List;
import java.util.Properties;
public class EmailDispatcherDemo {
public static void main(String[] args) {
String destinatarios = "user1@example.com,user2@example.com";
String assunto = "Demonstração de Envio";
String corpo = "<h1>Conteúdo em HTML</h1><p>Este é um e-mail de teste.</p>";
boolean usarHtml = true;
File anexo1 = new File("/caminho/para/documento.pdf");
File anexo2 = new File("/caminho/para/imagem.png");
List<File> anexos = List.of(anexo1, anexo2);
boolean resultado = enviarEmail(destinatarios, assunto, corpo, usarHtml, anexos);
System.out.println("Status do envio: " + resultado);
}
public static boolean enviarEmail(String para, String assunto, String conteudo, boolean ehHtml, List<File> arquivos) {
JavaMailSenderImpl remetente = configurarRemetente();
try {
MimeMessage mensagem = remetente.createMimeMessage();
MimeMessageHelper auxiliar = new MimeMessageHelper(mensagem, true);
auxiliar.setFrom("noreply@meudominio.com");
auxiliar.setTo(para.split(","));
auxiliar.setSubject(assunto);
auxiliar.setText(conteudo, ehHtml);
if (arquivos != null && !arquivos.isEmpty()) {
for (File arquivo : arquivos) {
auxiliar.addAttachment(arquivo.getName(), arquivo);
}
}
remetente.send(mensagem);
return true;
} catch (MessagingException excecao) {
excecao.printStackTrace();
return false;
}
}
private static JavaMailSenderImpl configurarRemetente() {
JavaMailSenderImpl remetente = new JavaMailSenderImpl();
remetente.setHost("smtp.servidor.com");
remetente.setUsername("autenticacao@servidor.com");
remetente.setPassword("senha_segura");
remetente.setPort(465);
remetente.setDefaultEncoding("UTF-8");
remetente.setProtocol("smtp");
Properties propriedades = new Properties();
propriedades.put("mail.smtp.auth", "true");
propriedades.put("mail.smtp.connectiontimeout", "30000");
propriedades.put("mail.smtp.ssl.enable", "true");
remetente.setJavaMailProperties(propriedades);
return remetente;
}
}
Para envio de e-mails de texto puro sem elementos avançados, utilize a classe SimpleMailMessage:
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import java.util.Properties;
public class TextoPuroEmailDemo {
public static void main(String[] args) {
JavaMailSenderImpl remetente = new JavaMailSenderImpl();
remetente.setHost("smtp.servidor.com");
remetente.setUsername("autenticacao@servidor.com");
remetente.setPassword("senha_segura");
remetente.setPort(587);
remetente.setDefaultEncoding("UTF-8");
Properties propriedades = new Properties();
propriedades.put("mail.smtp.auth", "true");
remetente.setJavaMailProperties(propriedades);
SimpleMailMessage mensagemSimples = new SimpleMailMessage();
mensagemSimples.setFrom("contato@meudominio.com");
mensagemSimples.setTo("destinatario@example.com");
mensagemSimples.setSubject("Aviso Importante");
mensagemSimples.setText("Esta mensagem confirma o recebimento do e-mail.");
remetente.send(mensagemSimples);
}
}