2011-07-24 9 views
5

Estoy usando Apache Commons Email en mi aplicación web y funciona bien.agregar archivo adjunto como corriente en el correo electrónico de commons

Ahora que tengo que enviar un documento por archivo adjunto, tengo algunos problemas. Necesito obtener el archivo de la base de datos (como un BLOB) y agregarlo como un archivo adjunto. Parece que Commons Email no es compatible con el archivo adjunto de transmisión y solo toma un archivo de una ruta.

Necesito saber cuál es la mejor práctica aquí?

  1. ¿Es necesario guardar el archivo en la estructura de directorios también, de manera que funciona muy bien con los Comunes de correo electrónico ?, o,
  2. ¿Hay alguna manera de que pueda utilizar el contenido transmitido sí a añadir ¿un adjunto?

Respuesta

20

Usando MultiPartEmail#attach(DataSource ds, String name, String description) debería funcionar:

import org.apache.commons.mail.*; 

// create the mail 
MultiPartEmail email = new MultiPartEmail(); 
email.setHostName("mail.myserver.com"); 
email.addTo("[email protected]", "John Doe"); 
email.setFrom("[email protected]", "Me"); 
email.setSubject("The picture"); 
email.setMsg("Here is the picture you wanted"); 

// get your inputstream from your db 
InputStream is = new BufferedInputStream(MyUtils.getBlob()); 
DataSource source = new ByteArrayDataSource(is, "application/pdf"); 

// add the attachment 
email.attach(source, "somefile.pdf", "Description of some file"); 

// send the email 
email.send(); 
+0

Gracias. lo probaré y lo actualizaré. – user644745

+1

Gracias, funcionó bien. Aunque no tengo idea para qué es la descripción del archivo. No vi ningún lugar en el correo electrónico recibido. – Carcamano

Cuestiones relacionadas