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
Também na biblioteca
Serialização de objetos em Swift (iOS/macOS): Codable, JSON e PropertyList
Guia completo de Symfony/Cache para PHP com exemplos práticos
Symfony para PHP: guia completo com exemplos