2011-07-24 49 views
5

我在我的網絡應用程序中使用Apache Commons Email,它工作正常。添加附件作爲流在普通郵件

現在我需要通過附件發送文檔,但我面臨一些問題。我需要從數據庫中獲取文件(作爲BLOB)並將其作爲附件添加。它看起來像Commons Email不支持流附件,它只從一個路徑獲取一個文件。

我需要知道這裏的最佳做法是什麼?

  1. 我需要保存在目錄結構中也文件,使 它正常工作與通用電子郵件?或者,
  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