добавить вложение в виде потока в общедоступной электронной почте - PullRequest
6 голосов
/ 24 июля 2011

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

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

Мне нужно знать, что здесь лучше всего делать?

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

1 Ответ

21 голосов
/ 28 июля 2011

Использование 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("jdoe@somewhere.org", "John Doe");
email.setFrom("me@apache.org", "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();
...