Jakarta Mail (JavaMail) para Java: guía completa con ejemplos
JavaMail (ahora Jakarta Mail) es la biblioteca estándar de Java para enviar, recibir y procesar correos electrónicos. Proporciona una API potente y flexible para trabajar con los protocolos SMTP, POP3 e IMAP, permitiendo a los desarrolladores integrar funciones de correo en sus aplicaciones. La biblioteca forma parte de la plataforma Jakarta EE (anteriormente Java EE) y cuenta con el soporte activo de la comunidad Eclipse Foundation.
¿Para qué sirve JavaMail? En el desarrollo moderno, prácticamente cualquier aplicación empresarial necesita enviar notificaciones, confirmaciones de registro, restablecimientos de contraseñas o boletines informativos. JavaMail permite hacerlo de forma programática, sin necesidad de usar servicios externos ni operaciones manuales. La biblioteca soporta tipos MIME, archivos adjuntos, correos HTML, envío multiproceso y cifrado (SSL/TLS).
Las principales funcionalidades incluyen: envío de correos a través de un servidor SMTP (Gmail, Outlook, servidor propio), lectura de correos mediante POP3/IMAP, trabajo con archivos adjuntos (imágenes, PDF, comprimidos), soporte para mensajes multipart, gestión de banderas (leído, eliminado) y configuración completa de la conexión a través de Properties.
Instalación
JavaMail (Jakarta Mail) se distribuye a través de Maven Central. Para usarlo, agrega la dependencia a tu archivo pom.xml (Maven) o build.gradle (Gradle).
Maven
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
Para Jakarta Mail (versión nueva, a partir de 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'
// O para Jakarta Mail:
implementation 'com.sun.mail:jakarta.mail:2.0.1'
Si usas Java 9+ y el sistema de módulos, agrega en module-info.java:
requires java.mail;
Inicio rápido — ejemplo mínimo funcional
Envío de un correo de texto simple a través del servidor SMTP de Gmail (requiere activar "Acceso a aplicaciones menos seguras" o usar una contraseña de aplicación).
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class InicioRapido {
public static void main(String[] args) {
// Configuración 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");
// Autenticación
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("tu-correo@gmail.com", "tu-contraseña");
}
});
try {
// Creación del mensaje
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("tu-correo@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("destinatario@ejemplo.com"));
message.setSubject("Correo de prueba desde Java");
message.setText("¡Hola! Este es un mensaje de prueba.");
// Envío
Transport.send(message);
System.out.println("¡Correo enviado con éxito!");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
Métodos/funciones/clases principales
1. Session.getInstance(Properties, Authenti
También en la biblioteca
Realm Kotlin: guía completa con ejemplos para Kotlin
Procesamiento de JSON en JavaScript (Node.js): guía completa
Autorización y autenticación en Go: paquetes y ejemplos prácticos
Colas de tareas para Rust: descripción general y ejemplos de uso
Trabajo con Apache Kafka en Swift (iOS/macOS): bibliotecas y ejemplos