Envio de email em Java: guia completo sobre JavaMail e Jakarta Mail

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Envio de email em Java com Jakarta Mail (JavaMail)



O envio de emails é uma das tarefas mais requisitadas em aplicações corporativas em Java: registro de usuários, notificações, recuperação de senhas e campanhas de marketing. Por muito tempo, o padrão de facto foi a biblioteca JavaMail, mas após a transição do Java EE para a Eclipse Foundation, ela foi renomeada para Jakarta Mail. Neste guia, abordaremos detalhadamente como configurar e usar o Jakarta Mail para enviar emails em Java.



O que é Jakarta Mail?

Jakarta Mail (anteriormente JavaMail) é uma API para enviar, receber e processar emails em aplicações Java. A biblioteca suporta os protocolos SMTP, POP3 e IMAP, bem como o padrão MIME, permitindo enviar tanto mensagens de texto simples quanto mensagens com anexos, marcação HTML e imagens.



Instalação e inclusão de dependências

Para trabalhar com Jakarta Mail, é necessário adicionar a dependência ao seu projeto. Se você usa Maven, adicione em pom.xml:

<dependency>    <groupId>com.sun.mail</groupId>    <artifactId>jakarta.mail</artifactId>    <version>2.0.1</version></dependency>


Para Gradle:

implementation 'com.sun.mail:jakarta.mail:2.0.1'


Importante: Se você usa Java 8 ou superior, certifique-se de que a versão do Jakarta Mail é compatível — para Java 8, a versão 1.6.x é adequada (por exemplo, javax.mail:javax.mail-api:1.6.2).



Envio básico de email em Java

Vamos considerar o exemplo mais simples — envio de uma mensagem de texto através do servidor SMTP do Gmail. Para isso, será necessário:

  • Uma conta do Gmail (ou de outro serviço de email)
  • Senha de aplicativo (se a autenticação de dois fatores estiver ativada)
  • Permissão para acesso a aplicativos menos seguros (se necessário)


Código de envio:

import jakarta.mail.*;import jakarta.mail.internet.*;import java.util.Properties;

public class EmailSender { public static void main(String[] args) { // 1. Configuração das propriedades de conexão Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true");

// 2. Autenticação Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-app-password"); } });

try { // 3. Criação da mensagem Message message = new MimeMessage(session); message.setFrom(new InternetAddress("from-email@gmail.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("Mensagem de teste do Java"); message.setText("Olá! Esta mensagem foi enviada usando Jakarta Mail.");

// 4. Envio Transport.send(message); System.out.println("Mensagem enviada com sucesso!"); } catch (MessagingException e) { e.printStackTrace(); } }}


Envio de mensagens HTML e com anexos

Frequentemente, é necessário enviar uma mensagem com formatação (HTML) ou anexar um arquivo. Para isso, utiliza-se MimeMultipart e MimeBodyPart.



Mensagem HTML

MimeBodyPart htmlPart = new MimeBodyPart();htmlPart.setContent("<h1>Olá!</h1><p>Esta é uma mensagem HTML do Java.</p>", "text/html; charset=utf-8");

Multipart mu

Recommendations