API Java gratuita para enviar correos simples y basados en HTML

API de procesamiento de correo Java de código abierto para crear y enviar mensajes de correo de texto y basados en HTML con archivos adjuntos, imágenes incrustadas, soporte de protocolos SMTP, IMAP, POP3 y soporte de seguridad avanzada.

¿Qué es JavaMail?

En el mundo de las aplicaciones empresariales y los sistemas automatizados, la capacidad de enviar y recibir correos electrónicamente de forma programática no es solo una comodidad, es una necesidad. Desde el envío de restablecimientos de contraseñas y confirmaciones de pedidos hasta el procesamiento de tickets de soporte entrantes, la integración de correo es una característica esencial. Para los desarrolladores Java, la piedra angular de esta funcionalidad ha sido la robusta API JavaMail de código abierto. Esta página de producto integral explorará la API JavaMail, sus potentes características y proporcionará ejemplos de código prácticos para que comiences con la integración de correo en tus aplicaciones Java.

La API JavaMail es un marco maduro y de código abierto provisto por Oracle (anteriormente Sun Microsystems) que ofrece un entorno independiente de plataforma y de protocolos para construir aplicaciones de correo y mensajería. Es la API estándar para manejar correo en el ecosistema Java. Abstrae las complejidades de los protocolos subyacentes como SMTP, POP3 e IMAP, permitiendo a los desarrolladores trabajar con una interfaz orientada a objetos y limpia. Entre las características importantes de la biblioteca se incluyen la creación y envío de correos HTML, la adición de archivos adjuntos, la inserción de imágenes en línea, contenido multiparte, soporte de autenticación y seguridad robusta, soporte de correo basado en carpetas, mejor búsqueda y filtrado de correos, lectura de correos vía SMTP, entre otras.

Previous Next

Comenzando con JavaMail

En primer lugar, necesita instalar JDK 1.6 o superior. Debe agregar la siguiente dependencia Maven en pom.xml.

Maven Dependency

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

Puede descargar la biblioteca directamente desde la página de GitHub.

Envío de mensajes de correo mediante la biblioteca Java

La biblioteca de código abierto JavaMail incluye soporte para crear y enviar tanto correos simples como correos HTML dentro de aplicaciones Java. Los desarrolladores pueden leer correos existentes, agregar archivos e imágenes como adjuntos, enviar correos a varios usuarios, agregar encabezados personalizados y mucho más. Necesita definir parámetros de conexión como el host, el puerto y banderas para habilitar la autenticación y TLS. El siguiente ejemplo muestra cómo enviar un correo de texto plano básico usando un servidor SMTP (como el de Gmail) dentro de aplicaciones Java.

¿Cómo enviar un correo de texto plano básico usando un servidor SMTP mediante la API Java?


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

public class SimpleEmailSender {

    public static void main(String[] args) {
        // Sender's and recipient's email ID
        String from = "your.email@gmail.com";
        String to = "recipient.email@example.com";
        
        // SMTP server configuration (for Gmail)
        String host = "smtp.gmail.com";
        final String username = "your.email@gmail.com";
        final String password = "your-app-password"; // Use an App Password for Gmail

        // Setup mail server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true"); // Use TLS
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", "587");

        // Get the Session object and pass username and password
        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        try {
            // Create a default MimeMessage object
            Message message = new MimeMessage(session);
            
            // Set From: header field
            message.setFrom(new InternetAddress(from));
            
            // Set To: header field
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            
            // Set Subject: header field
            message.setSubject("Hello from JavaMail API");
            
            // Set the actual message body
            message.setText("This is a test email sent programmatically using the JavaMail API.");

            // Send message
            Transport.send(message);
            System.out.println("Email sent successfully!");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

Búsqueda y filtrado de correos mediante Java

La biblioteca de código abierto JavaMail incluye soporte completo para buscar mensajes de correo en una carpeta según varios criterios (remitente, asunto, fecha, banderas) dentro de aplicaciones Java. Esto es especialmente útil al desarrollar clientes de correo o automatizaciones. También puede combinar múltiples términos de búsqueda (AND, OR, NOT) mediante AndTerm, OrTerm, NotTerm. El siguiente ejemplo muestra cómo buscar mensajes de un remitente específico usando comandos Java.

¿Cómo buscar mensajes de un remitente específico dentro de aplicaciones Java?


Store store = session.getStore("imap");
store.connect("imap.example.com", username, password);

Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);

// Search for messages from a specific sender
SearchTerm senderTerm = new FromStringTerm("alerts@example.com");
Message[] found = inbox.search(senderTerm);

for (Message m : found) {
    System.out.println("Subject: " + m.getSubject());
}

inbox.close(false);
store.close();

Soporte de protocolos SMTP, IMAP, POP3

JavaMail de código abierto, por defecto, soporta los tres protocolos de correo más comunes, como SMTP (Simple Mail Transfer Protocol) para enviar mensajes, POP3 (Post Office Protocol 3) para la recuperación simple de correos y IMAP (Internet Message Access Protocol) para un acceso más avanzado al correo (carpetas, recuperación parcial). Además, también soporta variantes seguras como SMTPS, POP3S, IMAPS, y puede ampliarse a proveedores personalizados.

Autenticación avanzada y seguridad mediante Java

JavaMail de código abierto soporta comunicación segura con servidores de correo, lo cual es crucial en el entorno actual orientado a la seguridad. La biblioteca soporta TLS (Transport Layer Security) que cifra el canal de comunicación entre tu aplicación y el servidor de correo. También soporta SSL (Secure Sockets Layer), predecesor de TLS, para establecer una conexión segura. Además, la biblioteca permite la autenticación estándar de nombre de usuario/contraseña para conectarse a servidores que requieran inicio de sesión.

 Español