এটি পড়তে কিছুটা ঘন হতে পারে তবে আরএফসি 1341 এর "সামগ্রী-স্থানান্তর-এনকোডিং" বিভাগে সমস্ত বিবরণ রয়েছে:
http://www.w3.org/Potocols/rfc1341/5_Content-Transfer-Encoding.html
পরিস্থিতি খারাপ থেকে আরও খারাপ দিকে চলে যায়। আমার সংক্ষিপ্তসারটি এখানে:
পটভূমি
এসএমটিপি, সংজ্ঞা অনুসারে (আরএফসি 821), মেলকে সীমাবদ্ধ করে প্রতিটি বিটের 1000 টি অক্ষরের লাইনে। এর অর্থ হল যে আপনি যে বাইটটি পাইপটি পাঠিয়েছেন তার কোনওটিতেই সর্বাধিক তাৎপর্যপূর্ণ ("সর্বোচ্চ অর্ডার") বিট "1" এ সেট করা যাবে না।
আমরা যে সামগ্রীটি প্রেরণ করতে চাইছি তা প্রায়শই সহজাতভাবে এই সীমাবদ্ধতা মানবে না। কোনও চিত্র ফাইল বা কোনও পাঠ্য ফাইলের কথা চিন্তা করুন যেখানে ইউনিকোড অক্ষর রয়েছে: এই ফাইলগুলির বাইটগুলি প্রায়শই তাদের 8 তম বিটটি "1" এ সেট করে। এসএমটিপি এটি অনুমতি দেয় না, সুতরাং আপনি কী অমিলের আশেপাশে কাজ করেছেন তা বর্ণনা করার জন্য আপনাকে "ট্রান্সফার এনকোডিং" ব্যবহার করতে হবে।
শিরোনামের মানগুলি Content-Transfer-Encoding
আপনাকে এই সমস্যাটি সমাধান করার জন্য যে নিয়মটি বেছে নিয়েছে তা বর্ণনা করে।
7 বিট এনকোডিং
7bit
সহজভাবে "" আমার ডেটাতে কেবল ইউএস-এএসসিআইআই অক্ষর রয়েছে, যা প্রতিটি অক্ষরের জন্য কেবল কম 7 বিট ব্যবহার করে। " আপনি মূলত গ্যারান্টি দিচ্ছেন যে আপনার সামগ্রীতে থাকা সমস্ত বাইট ইতিমধ্যে এসএমটিপি-র সীমাবদ্ধতা মেনে চলেছে এবং তাই এর কোনও বিশেষ চিকিত্সার প্রয়োজন নেই। আপনি ঠিক যেমন এটি পড়তে পারেন।
নোট করুন যে আপনি যখন চয়ন করবেন 7bit
, আপনি সম্মত হচ্ছেন যে আপনার সামগ্রীর সমস্ত লাইন দৈর্ঘ্যের 1000 টির চেয়ে কম অক্ষরের।
আপনার বিষয়বস্তু যতক্ষণ না এই নিয়ম মেনে চলে, ততক্ষণ 7bit
হ'ল সেরা স্থানান্তর এনকোডিং, যেহেতু অতিরিক্ত কোনও কাজ করার দরকার নেই; বাইটগুলি পাইপ থেকে নামার সাথে সাথে আপনি কেবল পড়েন / লিখবেন। চোখের 7bit
কন্টেন্ট এবং এটি উপলব্ধি করাও সহজ । এখানে ধারণাটি হ'ল আপনি যদি কেবল "সরল ইংরাজী পাঠ্য" লিখে থাকেন তবে আপনি ভাল হয়ে যাবেন। তবে এটি 2005 সালে সত্য ছিল না এবং এটি আজও সত্য নয়।
8 বিট এনকোডিং
8bit
এর অর্থ "আমার ডেটাতে বর্ধিত ASCII অক্ষর অন্তর্ভুক্ত থাকতে পারে; তারা স্ট্যান্ডার্ড ইউএস-এএসসিআইআই 7-বিট অক্ষরের বাইরে বিশেষ অক্ষরগুলি চিহ্নিত করতে 8 ম (সর্বোচ্চ) বিটটি ব্যবহার করতে পারে।" হিসাবে 7bit
, এখনও 1000-অক্ষর রেখা সীমা আছে।
8bit
ঠিক যেমন 7bit
, বাইটগুলি সেগুলি লেখা হয় বা তার থেকে পড়েছিল সেভাবে বাস্তবে কোনও রূপান্তর ঘটে না। এর অর্থ হ'ল আপনি গ্যারান্টি দিচ্ছেন না যে কোনওটি বাইটের মধ্যে "1" সর্বাধিক বিট সেট হবে না।
এটি এটিকে একটি পদক্ষেপের মতো বলে মনে হচ্ছে 7bit
, কারণ এটি আপনাকে আপনার সামগ্রীতে আরও স্বাধীনতা দেয় freedom তবে, আরএফসি 1341 এ টিডবিটটি ধারণ করে:
এই দস্তাবেজটির প্রকাশ হিসাবে, এমন কোনও মানকযুক্ত ইন্টারনেট ট্রান্সপোর্ট নেই যার জন্য মেল বডিগুলিতে আনইনকোডযুক্ত 8-বিট বা বাইনারি ডেটা অন্তর্ভুক্ত করা বৈধ। সুতরাং এমন কোনও পরিস্থিতি নেই যেখানে "8 বিট" বা "বাইনারি" সামগ্রী-স্থানান্তর-এনকোডিংটি আসলে ইন্টারনেটে আইনী।
আরএফসি 1341 20 বছর আগে এসেছিল। তারপর থেকে আমরা অর্জিত করেছি এমআইএমই এক্সটেনশানগুলি 8bit মধ্যে বোঝায় যা RFC 6152 । তবে তারপরেও লাইন সীমা এখনও প্রয়োগ হতে পারে:
নোট করুন যে এই এক্সটেনশনটি কোনও এসএমটিপি সার্ভারের লাইন দৈর্ঘ্য সীমাবদ্ধ করার সম্ভাবনাটি সরিয়ে দেয় না; সার্ভারগুলি এই এক্সটেনশনটি বাস্তবায়িত করতে বিনামূল্যে তবে তবুও একটি লাইন দৈর্ঘ্যের সীমাটি 1000 অক্টেটের চেয়ে কম নয় set
বাইনারি এনকোডিং
binary
এর মতোই 8bit
, লাইন দৈর্ঘ্যের কোনও সীমাবদ্ধতা বাদে। আপনি চাইলে যে কোনও অক্ষর অন্তর্ভুক্ত করতে পারেন এবং কোনও অতিরিক্ত এনকোডিং নেই। অনুরূপ 8bit
, আরএফসি 1341 বলেছে যে এটি সত্যিকার অর্থে কোনও বৈধ এনকোডিং স্থানান্তর এনকোডিং নয়। আরএফসি 3030 এর সাথে এটি বাড়িয়েছে BINARYMIME
।
উদ্ধৃত মুদ্রণযোগ্য
8BITMIME
এক্সটেনশনের আগে , 7bit
এসএমটিপি-র উপরে থাকতে পারে না এমন সামগ্রী পাঠানোর একটি উপায় থাকা দরকার । এইচটিএমএল ফাইলগুলি (যার মধ্যে 1000-অক্ষরের বেশি লাইন থাকতে পারে) এবং আন্তর্জাতিক অক্ষরের ফাইলগুলি এর ভাল উদাহরণ। quoted-printable
এনকোডিং (RFC 1341 ধারা 5.1 সংজ্ঞায়িত) এই হ্যান্ডেল ডিজাইন করা হয়েছে। এটি দুটি কাজ করে:
- ইউএস-এএসসিআইআই অক্ষরগুলি কীভাবে এড়াতে হবে তা সংজ্ঞায়িত করে যাতে কেবল মাত্র 7-বিট অক্ষরে তাদের প্রতিনিধিত্ব করা যায়। (সংক্ষিপ্ত সংস্করণ: তারা সমান চিহ্ন হিসাবে দুটি দুটি 7-বিট অক্ষর হিসাবে প্রদর্শিত হবে))
- সংজ্ঞা দেয় যে রেখাগুলি characters characters টি অক্ষরের বেশি হবে না এবং সেই লাইন বিরতিগুলি বিশেষ অক্ষরগুলি (যা পরে পালিয়ে যায়) ব্যবহার করে উপস্থাপন করা হবে।
উদ্ধৃত মুদ্রণযোগ্য, পলায়ন এবং সংক্ষিপ্ত রেখার কারণে, একজন মানুষের দ্বারা 7bit
বা তার চেয়ে পড়া খুব বেশি কঠিন 8bit
, তবে এটি সম্ভাব্য সামগ্রীর আরও বিস্তৃত পরিসরকে সমর্থন করে।
বেস 64 এনকোডিং
যদি আপনার ডেটাটি মূলত অ-পাঠ্য হয় (যেমন: একটি চিত্র ফাইল), আপনার কাছে অনেকগুলি বিকল্প নেই। 7bit
টেবিলের বাইরে 8bit
এবং binary
মাইম এক্সটেনশন আরএফসিগুলির পূর্বে অসমর্থিত ছিল। quoted-printable
কাজ করবে, তবে সত্যই অদক্ষ (প্রতিটি বাইট 3 টি অক্ষর দ্বারা প্রতিনিধিত্ব করা হবে)।
base64
এই ধরণের ডেটা জন্য একটি ভাল সমাধান। এটি 4 কাঁচা বাইটগুলি 4 মার্কিন-এএসসিআইআই অক্ষর হিসাবে এনকোড করে, যা তুলনামূলকভাবে দক্ষ। আরএফসি 1341 base64
এসএমটিপি বার্তার মধ্যে ফিট করার জন্য এনকোডড ডেটার রেখার দৈর্ঘ্যকে 76 টি অক্ষরে সীমাবদ্ধ করে , তবে আপনি যখন নির্ধারিত দৈর্ঘ্যে স্বেচ্ছাচারিত অক্ষরগুলি কেবল বিভক্ত করছেন বা সংযুক্ত করছেন তখন পরিচালনা করা অপেক্ষাকৃত সহজ।
সবচেয়ে বড় base64
ক্ষতিটি হ'ল - এনকোডেড ডেটা মানুষের দ্বারা সম্পূর্ণরূপে অপঠনযোগ্য, এমনকি যদি এটি নীচে কেবল "সরল" পাঠ্য হয়।