فنی · پاسخ مستند

MIME چیست؟ آشنایی با Multipurpose Internet Mail Extensions

MIME مخفف Multipurpose Internet Mail Extensions است. این استاندارد پروتکل اصلی Simple Mail Transfer Protocol ‏(SMTP) را گسترش می‌دهد تا تبادل محتوای غیرمتنی، مانند تصویر، صدا، ویدئو و داده‌های برنامه‌ها، و همچنین قالب‌های متن غنی مانند HTML ممکن شود.

MIME چگونه کار می‌کند

MIME با افزودن هدرهای مشخص به پیام ایمیل، به کلاینت ایمیل گیرنده می‌گوید با بدنه چگونه رفتار کند. مهم‌ترین هدر Content-Type است که نوع رسانه داده را تعریف می‌کند. برای مثال، text/plain متن ساده را نشان می‌دهد و text/html یک صفحه وب قالب‌بندی‌شده را. وقتی چند نوع محتوا در یک ایمیل ارسال می‌شود، از انواع multipart/mixed یا multipart/alternative برای کنار هم قرار دادن بخش‌های مختلف استفاده می‌شود.

اهمیت برای فرستندگان

MIME برای تحویل‌پذیری و تجربه کاربری ایمیل مدرن ضروری است. بدون آن، ایمیل‌ها به نویسه‌های ASCII هفت‌بیتی محدود می‌شدند، بین‌المللی‌سازی ناممکن می‌شد و امکان استفاده از پیوست وجود نداشت. فرستندگان با استفاده از MIME می‌توانند یک نسخه متن ساده جایگزین در کنار نسخه HTML ارائه دهند تا پیام صرف‌نظر از قابلیت‌های کلاینت ایمیل گیرنده خوانا باشد.

نکات عملیاتی و اشتباهات رایج

اشتباه رایج، تنظیم نکردن charset درست در هدر Content-Type است که به نویسه‌های خراب یا mojibake منجر می‌شود. مشکل دیگر، تعریف نادرست boundary در پیام‌های multipart است که ممکن است باعث شود ایمیل به‌صورت کد خام نمایش داده شود یا پیوست‌ها ناپدید شوند. توسعه‌دهندگان باید مطمئن شوند داده‌های باینری به‌درستی با Base64 کدگذاری می‌شوند تا هنگام عبور از relayهای SMTP خراب نشوند.

نمونه عملی

یک هدر MIME معمولی برای ایمیل HTML همراه با پیوست به این شکل است: Content-Type: multipart/mixed; boundary=boundary_123. درون بدنه، بخش اول برای بدنه پیام با Content-Type: text/html; charset=UTF-8 و بخش دوم برای فایل با Content-Type: application/pdf; name=invoice.pdf علامت‌گذاری می‌شود. می‌توانید با SendHQ یا ابزارهای رایگان آن (https://sendhq.cc/tools) ساختار هدرهای خود را تحلیل کنید.

سازوکارهای کدگذاری

چون SMTP برای متن طراحی شده بود، MIME برای انتقال داده‌های باینری از طرح‌های کدگذاری استفاده می‌کند. Base64 رایج‌ترین روش است که فایل‌های باینری را به رشته‌ای از نویسه‌های ASCII تبدیل می‌کند. کدگذاری Quoted-Printable برای متنی به کار می‌رود که بیشتر ASCII است اما چند نویسه غیر ASCII دارد؛ این روش در مقایسه با Base64 سربار کمتری دارد و در عین حال با سیستم‌های ایمیل قدیمی‌تر سازگار می‌ماند.

پرسش‌هایی که تیم‌ها می‌پرسند

آیا MIME همان SMTP است؟

خیر. SMTP پروتکلی است که برای انتقال ایمیل از یک سرور به سرور دیگر استفاده می‌شود، در حالی که MIME استانداردی است که قالب محتوای در حال انتقال را تعریف می‌کند.

نوع MIME ‏multipart/alternative چیست؟

زمانی استفاده می‌شود که یک محتوای واحد در چند قالب، مانند متن ساده و HTML، ارسال شود تا کلاینت ایمیل بهترین نسخه را برای نمایش انتخاب کند.

چرا در MIME از Base64 استفاده می‌شود؟

Base64 داده‌های باینری را به متن ASCII کدگذاری می‌کند تا داده هنگام عبور از سرورهای ایمیلی که فقط از متن هفت‌بیتی پشتیبانی می‌کنند سالم بماند.

آیا MIME در کاربردهای غیر ایمیلی هم استفاده می‌شود؟

بله، سیستم انواع MIME (که اکنون Media Types نامیده می‌شود) در سراسر وب استفاده می‌شود، از جمله در هدرهای HTTP برای توصیف نوع فایلی که دانلود یا آپلود می‌شود.

منابع اصلی