Envío de correos electrónicos con Java

1. Información general

En este tutorial rápido, veremos cómo enviar un correo electrónico con y sin archivos adjuntos, utilizando la biblioteca de correo principal de Java.

2. Configuración y dependencia del proyecto

Para este artículo, usaremos un proyecto simple basado en Maven con una dependencia en la biblioteca de correo de Java:

 javax.mail mail 1.5.0-b01 

La última versión se puede encontrar aquí.

3. Envío de un texto sin formato y un correo electrónico HTML

Primero, necesitamos configurar la biblioteca con las credenciales de nuestro proveedor de servicios de correo electrónico. Luego, crearemos una sesión que se utilizará para construir nuestro mensaje para enviar.

La configuración se realiza a través de un objeto de propiedades de Java :

Properties prop = new Properties(); prop.put("mail.smtp.auth", true); prop.put("mail.smtp.starttls.enable", "true"); prop.put("mail.smtp.host", "smtp.mailtrap.io"); prop.put("mail.smtp.port", "25"); prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

En la configuración de propiedades anterior, configuramos el host de correo electrónico como Mailtrap y también usamos el puerto proporcionado por el servicio.

Ahora avancemos creando una sesión con nuestro nombre de usuario y contraseña:

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

El proveedor de servicios de correo proporciona el nombre de usuario y la contraseña junto con los parámetros de host y puerto.

Ahora que tenemos un objeto de sesión de correo, creemos un mensaje Mime para enviar:

Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients( Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Mail Subject"); String msg = "This is my first email using JavaMailer"; MimeBodyPart mimeBodyPart = new MimeBodyPart(); mimeBodyPart.setContent(msg, "text/html"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(mimeBodyPart); message.setContent(multipart); Transport.send(message);

En el fragmento anterior, primero creamos una instancia de mensaje con las propiedades necesarias: para, desde y asunto. Seguido de un mimeBodyPart que tiene una codificación de texto / html, ya que nuestro mensaje está diseñado en HTML.

Lo siguiente que hicimos fue crear una instancia del objeto MimeMultipart que podemos usar para envolver el mimeBodyPart que creamos.

Finalmente, configuramos el objeto multiparte como el contenido de nuestro mensaje y usamos el envío () del objeto Transport para hacer el envío del correo.

Entonces, podemos decir que mimeBodyPart está contenido en la multiparte que está contenida en el mensaje. Por tanto, una multiparte puede contener más de una mimeBodyPart .

Este será el tema central de la siguiente sección.

4. Envío de correo electrónico con un archivo adjunto

A continuación, para enviar un archivo adjunto, solo necesitamos crear otro MimeBodyPart y adjuntar el archivo (s) a él:

MimeBodyPart attachmentBodyPart = new MimeBodyPart(); attachmentBodyPart.attachFile(new File("path/to/file"));

Luego podemos agregar la nueva parte del cuerpo al objeto MimeMultipart que creamos anteriormente:

multipart.addBodyPart(attachmentBodyPart);

Eso es todo lo que necesitamos hacer.

Una vez más, configuramos la instancia multiparte como el contenido del objeto del mensaje y finalmente usaremos send () para hacer el envío del correo .

5. Conclusión

En conclusión, hemos visto cómo usar la biblioteca de correo Java nativa para enviar correos electrónicos incluso con archivos adjuntos.

Como siempre, el código fuente completo está disponible en Github.