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- También en la biblioteca
Trabajo con imágenes: resize y crop en C++ con OpenCV
Procesamiento de imágenes en C++: resize y crop con la biblioteca OpenCV
Actix-web para Rust: guía completa con ejemplos
Cliente OAuth para C# (.NET): implementación de autorización a través de servicios de terceros