7

WebアプリケーションでApacheCommonsEmail使用していますが、正常に動作します。

添付ファイルでドキュメントを送信する必要があるので、いくつかの問題に直面しています。データベースから(BLOBとして)ファイルを取得し、添付ファイルとして追加する必要があります。Commons Emailはストリームの添付をサポートしておらず、パスからファイルを取得するだけのようです。

ここでのベストプラクティスを知る必要がありますか?

  1. Commons Emailで正常に機能するように、ファイルをディレクトリ構造にも保存する必要がありますか?、または、
  2. ストリーミングされたコンテンツ自体を使用して添付ファイルとして追加する方法はありますか?
4

1 に答える 1

22

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();
于 2011-07-28T05:10:13.927 に答える