JavaMail (Jakarta Mail) para Java: guia completo com exemplos

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

JavaMail (Jakarta Mail) para Java: guia completo com exemplos

JavaMail (agora Jakarta Mail) é a biblioteca padrão do Java para enviar, receber e processar e-mails. Ela fornece uma API poderosa e flexível para trabalhar com os protocolos SMTP, POP3 e IMAP, permitindo que desenvolvedores integrem funcionalidades de e-mail em suas aplicações. A biblioteca faz parte da plataforma Jakarta EE (antiga Java EE) e é ativamente mantida pela comunidade Eclipse Foundation.

Para que serve o JavaMail? No desenvolvimento moderno, praticamente qualquer aplicação corporativa precisa enviar notificações, confirmações de cadastro, redefinições de senha ou relatórios. O JavaMail permite fazer isso programaticamente, sem depender de serviços terceiros ou operações manuais. A biblioteca suporta tipos MIME, anexos, e-mails HTML, envio multithread e criptografia (SSL/TLS).

Os principais recursos incluem: envio de e-mails via servidor SMTP (Gmail, Outlook, servidor próprio), leitura de e-mails via POP3/IMAP, manipulação de anexos (imagens, PDFs, arquivos), suporte a mensagens multipart, gerenciamento de flags (lido, excluído) e configuração completa da conexão via Properties.

Instalação

O JavaMail (Jakarta Mail) é distribuído através do Maven Central. Para usar, adicione a dependência ao seu pom.xml (Maven) ou build.gradle (Gradle).

Maven

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

Para Jakarta Mail (versão mais recente, a partir do Jakarta EE 9):

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

Gradle

implementation 'com.sun.mail:javax.mail:1.6.2'
// Ou para Jakarta Mail:
implementation 'com.sun.mail:jakarta.mail:2.0.1'

Se você usa Java 9+ e o sistema de módulos, adicione no module-info.java:

requires java.mail;

Início rápido — exemplo mínimo funcional

Envio de um e-mail de texto simples via servidor SMTP do Gmail (é necessário ativar "Acesso a aplicativos menos seguros" ou usar uma senha de aplicativo).

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

public class QuickStart {
    public static void main(String[] args) {
        // Configurações SMTP
        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");

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

        try {
            // Criando a mensagem
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("seu-email@gmail.com"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("destinatario@exemplo.com"));
            message.setSubject("E-mail de teste do Java");
            message.setText("Olá! Esta é uma mensagem de teste.");

            // Enviando
            Transport.send(message);
            System.out.println("E-mail enviado com sucesso!");

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

Principais métodos/funções/classes

1. Session.getInstance(Properties, Authenti

Recommendations