پروتکل MIME مخفف عبارت (Multi-Purpose Internet Mail Extensions) می باشد.که برای ارسال داد ه هاي مالتي مديا از قبيل تصويرVideo و Audio يا ديگر قالب هاي غيراسكي به کار می رود. به منظور ارسال اين گونه داده ها، كارگزار كاربر یا(user agent) بايد شامل سرآيندها یا (header) اضافي باشد.
پروتکل MIME شامل دو کلید واژه مهم برای پذیرش پیام های مالتی می باشد که عبارتند از:
- Content-Type:
(header)که یا سرآیند content type به کارگزار (user agent) کاربر دریافت کننده امکان انجام عمل مناسب را بر روی پیام می دهد.برای مثال با مشخص کردن اینکه بدنه نامه شامل یک فایل تصویری از نوع JPEG می باشد، (useragent ) یا کارگزار کاربر دریافت کننده بدنه نامه را به صورت تصویر JPEG کد گشایی می کند.
- Content-Transfer-Encoding:
(header) یا سرآیند Content-Transfer-Encoding:به دلیل تبدیل كردن فرمت غيراسكي به اسكي است. اين سرآيند، كارگزاركاربر دريافت كننده را از وجود متن كدگذاري شده ي نامه و نوع كدگذاري آگاه مي كند. بنابراين، وقتي كه كارگزار كاربر اين دو سرآيند رادريافت كند، متن نامه را با استفاده از مقدار مشخص شده درContent-Transfer-Encodingبه كد غيراسكي تبديل كرده و سپس ازطريقContent-Typeنوع عملي كه بايد بر روي بدن هي نامه انجام گيرد را تعيين مي كند.
مثالي ازMIME
در اين بخش، با استفاده از يك مثال واقعي چگونگي استفاده و پردازشMIMEنشان داده ميشود. فرض كنيدdoug sauderآقای قصد دارد تا يك فايل PNG را در بدنه ي نامه قرار دهد. براي انجام اين كار، كارگزاریا (user agent) كاربر Doug Sauder، آدرس آقای Joe Blowو موضوع نامه را مشخص كرده و فایل PNG را در بدنه ی نامه قرار می دهد.پس از كليك كردنDoug sauderبر روي دكمه،Send كارگزاریا (user agent) كاربر يك پيامMIMEتوليد مي كند كه مشابه مثال زیر است.
همان طور كه در مثال فوق نشان داده شده است كارگزار كاربر doug sauder تصويرpngرا با استفاده از كدهايbase 64 كدگذاري كرده است. اين نوع كدگذاري، يكي از روشهاي استاندارد كدگذاريMIMEبراي تبديل به كد اسكي هفت بيتي محسوب مي شود.تكنيك كدگذاري ديگرquoted-printable content-transfer-encodingاست كه عموما براي تبديل پيام هاي اسكي عادي به متن اسكي بدون كاراكترهاي اضافي مي باشد.
كارگزار كاربر Joe Blow با توجه به مقدار سرآيندContent-Transfer-Encodingمتن كدگذاري شده از طريق روش base 64راكدگشايي مي كند تا براي Joe Blow قابل خواندن باشد. اين پيام همچنين حاوي Content-Type: image/png است كه براي كارگزار كاربر Joe Blow مشخص مي نمايد كه متن پس از كدگشايي به طريق base 64 بايد به صورت png در آيد.
سرآيند یا (headre) ديگري كه در مثال بالا مشاهده ميشود MIME-Version است كه نسخه MIME به كاربرده شده را نشان مي دهد.
سرآيند Content-Type مشخص كننده ي ماهيت داده هاي بدنه ي نامه است كه با نام هاي نوع (type) و زيرنوع (subtype) نشان داده شده و پس از آن مجموع هاي از پارامترها قرار گرفته اند.
mimeطوري طراحي شده است كه قابليت توسعه پذيري با انواع نوع/ زيرنوع ها را داشته باشد.
در حال حاضر، هفت نوع مهم معرفي شده اند. براي هر كدام از اين نوع ها، مجموعه اي از زيرنوع ها در نظر گرفته شده اند كه هرساله ارتقاء مي يابند. در ادامه پنج نمونه از اين نوع ها شرح داده ميشوند:
:text
اين نوع براي كارگزار كاربر دريافت كننده مشخص مي كند كه بدنه ي نامه شامل داده هاي متني است. نوع/ زيرنوع رايج استفاده شده در اين زمينه text/plain است. زيرنوع plain بيان كننده ي متن ساده است كه نياز به نرم افزار خاصي براي فهميدن متن نامه ندارد. يك نظر اجمالي به سرآيند نامه ها نشان مي دهد كه اكثر آن ها از اين نوع استفاده ميكنند و اصولا با پارامترهاي خاصي همراه شده اند. به عنوان مثال، مي توان به text/plain; Charest=us-ascii و يا text/plain; Charest=“ISO- 8859-1 اشاره كرد. نوع/زيرنوع ديگري كه عموما به كار مي رود text/html است. زيرنوع html مشخص مي كند كه متن نامه شامل تگ هاي HTML است و كارگزار كاربر دريافت كننده، بايد آن را به صورت صفحه ي وب نشان دهد.
image:
اين نوع مشخص مي كند كه بدنه ي نامه به صورت يك تصوير است. دو نوع/ زيرنوع رايج استفاده شده در اين زمينه عبارتند از.image/jpeg و image/gif به عنوان مثال، وقتي كارگزار كاربر دريافت كننده با image/gif مواجه مي گردد، متوجه مي شود كه بايد تصويري از نوع GIF را كدگشايي نمايد.
audio :
اين نوع نياز به يك وسيله خروجي شنيداري مانند بلندگو براي منتقل كردن محتواي نامه دارد.
:video
اين نوع mpeg و فايل هاي QuickTime را در بر ميگيرد.
Application:
اين نوع براي داده هايي است كه متناسب با دسته اي خاص از داده ها نباشند و قبل از ديده شدن يا مورد استفاده قرارگرفتن توسط كاربر نياز به پردازش با برنامه ي كاربردي خاصي داشته باشند. به عنوان مثال، زماني كه كاربر فايلي از نوع Microsoft Wordرا به نامه ي خود پيوست مي كند، كارگزار كاربر فرستنده از application/msword به عنوان مقدار نوع/ زيرنوع استفاده مي نمايد.در مقصد نيز، كارگزار كاربر گيرنده، متن نامه را از طريق برنامه ي كاربردي Microsoft Word باز مي كند.
multipart:
يك نوع MIME كه از نظر كاربردي از اهميت زيادي برخوردار است و نياز به بررسي ويژه دارد، نوع multipart است. هر نامه ي الكترونيكي همانند يك صفحه ي وب مي تواند داراي اشياء زيادي مانند متن، تصوير، اپلت ها و غيره باشد. در هر نامه ي الكترونيكي، تمامي اشياء از طريق پيام يكساني ارسال مي شوند. هنگامي كه يك پيام مالتي مديا شامل بيش از يك شيء )از قبيل چندين تصوير، متن اسكي و غيره) است، از سرآيند Content-Type: multipart/mixed استفاده ميشود. اين سرآيند، براي كارگزار كاربر دريافت كننده مشخص مي كند كه پيام حاوي چندين شيء مختلف است. تعيين كردن چند نكته براي كارگزار كاربر دريافت كننده مهم است كه عبارتند از:
- نقطه ي شروع و پايان هر شيء.
- چگونگي كدگشايي هر شيء غيراسكي.
- نوع محتواي هر پيام.
تمامي اين موارد با قراردادن كاراكترهاي مرزي خاص بين هر شيء با شيء بعدي و استفاده از سرآيندهايContent-Type: وContent-Transfer-Encoding: انجام پذير است.
سرآيند نامه ي دريافت شده
هر نامه ي الكترونيكي شامل مولفه هاي بسياري است. متن نامه كه قسمت اصلي آن محسوب مي شود، از فرستنده به گيرنده ارسال مي شود.
در مورد نامه هاي،multipart بدنه ي نامه خود شامل چند قسمت متفاوت است كه هر قسمت با يك يا چند خط اطلاعات اضافي در مورد آن قسمت همراه ميشود.
همان طور كه قبلا اشاره شد، اطلاعات اضافي در قالب خطوط سرآيند نامه قرار مي گيرند و براساسRFC 822 شامل سرآيندهاي زیر هستند.
- SUBJECT:
- FORM:
- TO:
سرآيندهايMIMEنيزContent-Transfer-Encoding و Content-Typeمي باشند. اماسرآيندهاي ديگري كه تاكنون به آ نها اشاره نشده سرآيندهاي درج شده توسط سرويس دهنده ي مقصد مي باشند. سرويس دهنده ي مقصد به محض دريافت سرآيندهايRFC822و MIMEيك خط سرآيندReceived: را در قسمت بالاي پيام قرار ميدهد. اطلاعاتي كه در اين خط قرار مي گيرند عبارتند از: نام سرويس دهنده ي مبدا، نام سرويس دهنده ي مقصد و زمان دريافت نامه در سرويس دهنده ي مقصداين موارد،ممكن است كه يك نامه ي ساده شامل چند خطReceivedوReturn-Pathمختلف باشد. دليل اين موضوع، دريافت شدن نامه توسط سرويس دهنده ي ديگري بين سرويس دهندگان مبدا و مقصد است.