2010-04-06 14 views
85

मेरे पास फ़ाइल की सामग्री के साथ byte[] है। मैं इसे System.Net.Mail का उपयोग करके एक अनुलग्नक के रूप में भेजना चाहता हूं।बाइट सरणी से ईमेल अनुलग्नक कैसे जोड़ें?

मैंने देखा कि अनुलग्नक वर्ग में 1 ओवरलोड है जो एक स्ट्रीम स्वीकार करता है।

Attachment att = new Attachment(Stream contentStream,string name); 

क्या इस अधिभार के माध्यम से byte[] पास करना संभव है?

उत्तर

160

सबसे आसान तरीका:

Attachment att = new Attachment(new MemoryStream(bytes), name); 

ध्यान दें कि जब तक आप अतुल्यकालिक संचालन के साथ फंकी सामान करते हैं, MemoryStream विमुखता वाला छोड़ने के लिए, आप के लिए जीवन को आसान बना सकता है जो सुरक्षित है। माना जाता है कि गारंटी है कि भविष्य में यह सच होगा, लेकिन मुझे लगता है कि यह असंभव है कि यह बदलेगा। मैं करने के लिए लगाव के निपटान इसकी धारा :(

+1

धन्यवाद जॉन, बिल्कुल मुझे क्या चाहिए! –

+2

अच्छा बिंदु, मैंने फ़ाइल आधारित अनुलग्नक जोड़ते समय देखा, मुझे फ़ाइल पर एक हैंडल जारी करने के लिए अनुलग्नक ऑब्जेक्ट का निपटान करने की आवश्यकता थी। निश्चित रूप से स्ट्रीम को जीसी द्वारा ख्याल रखा जाना चाहिए, क्योंकि यह आईओ ऑपरेशन नहीं है? –

+0

@ जेएल: हाँ, बिल्कुल। –

30

के disposes है कि क्या के रूप में कोई संकेत नहीं देख सकते हैं आप उचित MemoryStream constructor overload का उपयोग कर एक MemoryStream को byte[] बदलना होगा।

Attachment att = new Attachment(new MemoryStream(myBytes), name); 

ध्यान दें कि नाम पैरामीटर Attachment's constructor अनुलग्नक के सामग्री प्रकार का नाम निर्दिष्ट करता है, न कि अनुलग्नक का नाम।

+2

ऐसा लगता है कि नाम पैरामीटर फ़ाइल का नाम है, सामग्री प्रकार नहीं। टिप्पणियां देखें: https://msdn.microsoft.com/en-us/library/system.net.mime.contenttype.name.aspx –

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