বাইট অ্যারে থেকে কোনও ইমেল সংযুক্তি কীভাবে যুক্ত করবেন?


110

আমার কাছে byte[]ফাইলের সামগ্রী রয়েছে। আমি এটি ব্যবহার করে সংযুক্তি হিসাবে প্রেরণ করতে চাই System.Net.Mail।

আমি লক্ষ্য করেছি সংযুক্তি ক্লাসে 1 টি ওভারলোড রয়েছে যা একটি স্ট্রিম গ্রহণ করে।

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

byte[]এই ওভারলোডের মাধ্যমে পাস করা কি সম্ভব ?


বিটিডাব্লু, আপনি সংযুক্ত ফাইলের অন্যান্য বৈশিষ্ট্যগুলি নির্ধারণ করতে (উদাহরণস্বরূপ ক্রিয়েশনডেট) চাইলে আপনিও অ্যাট কনটেন্টডিসপজিশন ব্যবহার করতে পারেন।
— জন গিলমার

উত্তর:


214

সহজ উপায়:

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

মনে রাখবেন যে আপনি অ্যাসিঙ্ক্রোনাস অপারেশনগুলির সাথে ফানকি স্টাফ না করলে নিস্পত্তিহীন MemoryStreamছেড়ে দেওয়া নিরাপদ, যা আপনার পক্ষে জীবনকে আরও সহজ করে তুলতে পারে। স্বীকারোক্তি নেই যে ভবিষ্যতে এটি সত্য হবে এমন কোনও গ্যারান্টি নেই তবে আমি মনে করি এটি পরিবর্তিত হওয়ার সম্ভাবনা নেই। সংযুক্তি নিষ্পত্তি করার প্রবাহটি এর প্রবাহকে নিষ্পত্তি করে কিনা সে সম্পর্কে আমি কোনও ইঙ্গিত দেখতে পাচ্ছি না :(


2
ভাল কথা, ফাইল ভিত্তিক সংযুক্তিগুলি যুক্ত করার সময় আমি লক্ষ্য করেছি, ফাইলটিতে একটি হ্যান্ডেল প্রকাশ করার জন্য আমার সংযুক্তিটির বিষয়টিকে নিষ্পত্তি করতে হবে। অবশ্যই স্ট্রিমিকে জিসি দ্বারা যত্ন নেওয়া উচিত, কারণ এটি কোনও আইও অপারেশন নয়?
— জেএল।

এফডব্লিউআইডাব্লু, মনোর সংযুক্তি ক্লাসটি Disposeসামগ্রী স্ট্রিমের দিকে কল করে এবং দ্রুত পরীক্ষার কেস থেকে। নেট 4.0 একই কাজ করে। আমি অতি-বিস্মিত নই যে এই ঘটনাটি, তবে এটি সেখানে।
— ম্যাট এনরাট

34

আপনার যথাযথ ব্যবহার করে রূপান্তর করতে byte[]হবেMemoryStream MemoryStream কন্সট্রাকটর জমিদার ।

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

নোট করুন যে সংযুক্তির কনস্ট্রাক্টরের নামের প্যারামিটারটি সংযুক্তির সামগ্রীর ধরণের নাম নির্দিষ্ট করে, সংযুক্তির নাম নয়।


4
দেখে মনে হচ্ছে নামের প্যারামিটারটি ফাইলের নাম, সামগ্রীর ধরণের নয়। : মন্তব্য দেখুন msdn.microsoft.com/en-us/library/...
— Uğur Aldanmaz
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.