我在我的网络应用程序中使用Apache Commons Email,它工作正常。
现在我需要通过附件发送文件,我遇到了一些问题。我需要从数据库中获取文件(作为 BLOB)并将其添加为附件。似乎 Commons Email 不支持流附件,它只从路径中获取文件。
我需要知道这里的最佳做法是什么?
- 我是否还需要将文件保存在目录结构中,以便它与 Commons Email 一起正常工作?,或者,
- 有什么方法可以使用流媒体内容本身添加为附件?
我在我的网络应用程序中使用Apache Commons Email,它工作正常。
现在我需要通过附件发送文件,我遇到了一些问题。我需要从数据库中获取文件(作为 BLOB)并将其添加为附件。似乎 Commons Email 不支持流附件,它只从路径中获取文件。
我需要知道这里的最佳做法是什么?
使用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();