Saltar al contenido

¿Cómo adjuntar varios archivos a un correo electrónico usando JavaMail?

Solución:

Bueno, ha pasado un tiempo desde que hice el trabajo de JavaMail, pero parece que podrías repetir este código varias veces:

DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);

Por ejemplo, podría escribir un método para hacerlo:

private static void addAttachment(Multipart multipart, String filename)
{
    DataSource source = new FileDataSource(filename);
    BodyPart messageBodyPart = new MimeBodyPart();        
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName(filename);
    multipart.addBodyPart(messageBodyPart);
}

Luego, desde su código principal, simplemente llame:

addAttachment(multipart, "file1.txt");
addAttachment(multipart, "file2.txt");

etc

ACTUALIZACIÓN (marzo de 2020)

Con lo ultimo API JavaMail ™ (versión 1.6 por el momento, JSR 919), las cosas son mucho más simples:

  • void attachFile(File file)
  • void attachFile(File file, String contentType, String encoding)
  • void attachFile(String file)
  • void attachFile(String file, String contentType, String encoding)

Lectura útil

Aquí hay un tutorial agradable y directo con el ejemplo completo:

  • JavaMail: cómo enviar correo electrónico con archivos adjuntos

    Multipart mp = new MimeMultipart();

        MimeBodyPart mbp1 = new MimeBodyPart();
        mbp1.setContent(body,"text/html");
        mp.addBodyPart(mbp1);

        if(filename!=null)
        {
            MimeBodyPart mbp2 = null;
            FileDataSource fds =null;
            for(int counter=0;counter<filename.length;counter++)
            {
                mbp2 = null;
                fds =null;
                mbp2=new MimeBodyPart();
                fds = new FileDataSource(filename[counter]);
                mbp2.setDataHandler(new DataHandler(fds));
                mbp2.setFileName(fds.getName());
                mp.addBodyPart(mbp2);
            }
        }
        msg.setContent(mp);
        msg.setSentDate(new Date());
        Transport.send(msg);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *