2011-07-24 2 views
5

Я использую Apache Commons Email в своем веб-приложении, и он отлично работает.добавить вложение как поток в обычном режиме электронной почты

Теперь, когда мне нужно отправить документ в приложении, я столкнулся с некоторыми проблемами. Мне нужно получить файл из базы данных (как BLOB) и добавить его в качестве вложения. Похоже, Commons Email не поддерживает вложение потоков, и он берет только файл с пути.

Мне нужно знать, что является лучшей практикой здесь?

  1. Нужен ли мне сохранить файл в структуре каталогов также, так что он прекрасно работает с Commons Email ?, или,
  2. Есть ли способ, что я могу использовать поточное содержание самого добавить в приложение?

ответ

20

Использование MultiPartEmail#attach(DataSource ds, String name, String description) должно работать:

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

Спасибо. попробует его и обновит. – user644745

+1

Спасибо, отлично работал. Хотя я понятия не имею, что такое описание файла. Я не видел нигде в полученном письме. – Carcamano

Смежные вопросы