Envío de Email en Java: bibliotecas JavaMail y Simple Java Mail

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Envío de Email en Java: resumen de bibliotecas y ejemplos de código



El envío de correos electrónicos es una de las tareas básicas en aplicaciones corporativas y web. En el ecosistema Java existen varias herramientas probadas para trabajar con el protocolo SMTP. En este artículo analizaremos dos bibliotecas principales: la estándar JavaMail (Jakarta Mail) y la más moderna Simple Java Mail. Aprenderá a configurar la conexión a un servidor SMTP, enviar un correo simple, agregar marcado HTML y adjuntos.



1. Jakarta Mail (anteriormente API JavaMail)



Jakarta Mail (nombre anterior — API JavaMail) es la especificación oficial para trabajar con correo electrónico en Java. Forma parte de Jakarta EE y puede usarse en cualquier proyecto Java. Para conectarse a un servidor SMTP, es necesario agregar dependencias en pom.xml (Maven) o build.gradle (Gradle).



Agregar dependencia (Maven)

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


Ejemplo: envío de un correo de texto simple

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

public class EmailSender { public static void main(String[] args) { final String username = "your-email@gmail.com"; final String password = "your-app-password";

Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("Correo de prueba desde Java"); message.setText("¡Hola! Este correo fue enviado usando la API JavaMail.");

Transport.send(message); System.out.println("¡Correo enviado exitosamente!"); } catch (MessagingException e) { e.printStackTrace(); } }}


  • Properties — configuración SMTP: host, puerto, autenticación, TLS.
  • Session — sesión con el servidor, creada con un autenticador.
  • MimeMessage — objeto del correo, donde se definen remitente, destinatario, asunto y cuerpo.
  • Transport.send() — envío del correo a través de SMTP.


Envío de correo HTML con adjunto

import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;

public class HtmlEmailWithAttachment { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-password"); } });

MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-

Recommendations