2011-07-24 18 views
5

में स्ट्रीम के रूप में अनुलग्नक जोड़ें मैं अपने वेब-एप्लिकेशन में Apache 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

संबंधित मुद्दे