2011-07-24 9 views
5

Sto usando Apache Commons Email nella mia web-application e funziona perfettamente.aggiungi allegato come email stream in common

Ora che ho bisogno di inviare un documento tramite allegato, sto affrontando alcuni problemi. Ho bisogno di ottenere il file dal database (come un BLOB) e aggiungerlo come allegato. Sembra che l'e-mail di Commons non supporti l'allegato del flusso e richiede solo un file da un percorso.

Ho bisogno di sapere qual è la migliore pratica qui?

  1. Devo salvare il file in struttura di directory anche, così che funziona benissimo con Comuni e-mail ?, o,
  2. C'è qualche modo posso usare il in streaming contenuto stesso da aggiungere come un allegato?

risposta

20

Utilizzando MultiPartEmail#attach(DataSource ds, String name, String description) dovrebbe funzionare:

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

Grazie. lo proveremo e si aggiornerà. – user644745

+1

Grazie, ha funzionato bene. Anche se non ho idea di cosa sia la descrizione del file. Non ho visto da nessuna parte nell'e-mail ricevuta. – Carcamano