InicioCiencia EducacionEnviar correo JavaMail con texto html y adjunto
Bienvenidos a este nuevo post. En este caso, hablaré de un tema bastante útil y es enviar correos electrónicos a través de Java con texto en formato html y con un archivo adjunto. Para lograrlo, nos apoyaremos de la librería JavaMail. Una vez descargada será necesario agregarla a su proyecto para poder utilizarla. Sin más preámbulos adjunto el código fuente y lo comento para ver su funcionamiento: Clase Mailer (contiene la función para mandar el correo): package com.ea24.email; package com.ea24.email; import java.awt.HeadlessException; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; /** * * @author ea24 */ public class Mailer { Properties mailProps; public Mailer(Properties mailProps) { this.mailProps = mailProps; } public boolean sendMail(String user, String pass, String recipient) { try { Session session = Session.getDefaultInstance(mailProps, null ) ; session.setDebug(true ) ; //Se compone la parte del texto BodyPart text = new MimeBodyPart( ) ; text.setContent("n" + "

Comunicándose desde Java

n" + "

Este email ha sido enviado desde java

n" + "", "text/html" ) ; // Se compone el archivo adjunto BodyPart attached = new MimeBodyPart( ) ; attached.setDataHandler(new DataHandler(new FileDataSource("C:/archivo.doc" ) ) ) ; attached.setFileName("Archivo adjunto.doc" ) ; // Una MultiParte para agrupar texto y adjunto. MimeMultipart multiPart = new MimeMultipart( ) ; multiPart.addBodyPart(text ) ; multiPart.addBodyPart(attached ) ; // Se compone el correo, dando to, from, subject y el contenido. MimeMessage message = new MimeMessage(session ) ; message.setFrom(new InternetAddress(user) ) ; message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient) ) ; message.setSubject("Correo desde JavaMail" ) ; message.setContent(multiPart ) ; // Se envia el correo. Transport transport = session.getTransport("smtp" ) ; transport.connect(user, pass ) ; transport.sendMessage(message, message.getAllRecipients() ) ; transport.close( ) ; } catch (HeadlessException e) { System.out.println(e.getMessage() ) ; return false; } catch (MessagingException e) { System.out.println(e.getMessage() ) ; return false; } return true; } }La clase no es muy complicada, contiene sólo un atributo de tipo Properties mailProps y que es el contiene las propiedades para la conexión con el servidor de correo y un constructor que recibe como parámetro ese objeto de tipo Properties. Luego está el único método sendMail que recibe tres parámetros user, pass y recipient donde: user: es el usuario de correo desde el que se mandará el mail pass: es la contraseña del correo desde el que se mandará el mail recipient: es el usuario de correo que recibirá el mail De inicio se requiere un objeto de Session mismo que recibe el objeto Properties para su instanciación. El método setDebug le indicará a la sesión si debe debuggear y mostrar todo lo sucedido con ella. Para este caso al contener texto y adjuntos se debe utilizar un BodyPart para el texto y otro para el adjunto. Para que el texto tenga formato html, se debe indicar en el método de la siguiente manera: text.setContent("texto en formato html", "text/html" ) ;Luego al bodyPart del adjunto, se le setea un dataHandler con el archivo a adjuntar. Después se crea un objeto de tipo MimeMultipart para agregar todas las partes (texto y adjunto, pero puede haber más). Hecho esto procedemos a crear la instancia de la clase MimeMessage para generar el mensaje completo seteando el usuario que envía, el que recibe, el asunto del mensaje y el contenido del mensaje. Finalemente con un objeto de tipo Transport, se inicia sesión con el usuario y contraseña de quien envía, se envía el mensaje con el método sendMessage de la siguiente forma; transport.sendMessage(message, message.getAllRecipients() ) ;Ya sólo resta cerrar el transport. Se capturan las excepciones necesarias y es todo para la clase. Luego tenemos la clase de prueba: package com.ea24.email; import java.util.Properties; import javax.swing.JOptionPane; /** * * @author ea24 */ public class Main { public static void main(String[] args) { //las propiedades para la conexión Properties mailProps = new Properties( ) ; mailProps.setProperty("mail.transport.protocol", "smtp" ) ; mailProps.setProperty("mail.smtp.host", "smtp.gmail.com" ) ; mailProps.setProperty("mail.smtp.starttls.enable", "true" ) ; mailProps.setProperty("mail.smtp.port", "587" ) ; mailProps.setProperty("mail.smtp.auth", "true" ) ; Mailer mailer = new Mailer(mailProps ) ; boolean wasSend = mailer.sendMail("[email protected]", "password", "[email protected]" ) ; if(wasSend) { JOptionPane.showMessageDialog(null, "El correo se envió correctamente." ) ; } else { JOptionPane.showMessageDialog(null, "No pudo enviarse el correo", "Error", JOptionPane.ERROR_MESSAGE); } } }Para la clase de prueba se crea el objeto de tipo properties y se llena con los valores adecuados según sea el servidor de correo. Depués se crea una instancia de la clase Mailer pasándole el archivo de propiedades y se llama al método sendMail pasándole el usuario, contraseña y destinatario. De acuerdo con lo que devuelva el método en la variable wasSend se determina si se envío o no el correo. Eso es básicamente todo lo que hay que hacer para el envío de correos electrónicos con texto en html y con archivos adjuntos. Ojalá sea de utilidad para muchos, si hay dudas ya saben. Saludos!
Datos archivados del Taringa! original
5puntos
427visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

e
ea24🇦🇷
Usuario
Puntos0
Posts13
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.