email.encoders: کدگذارها

کد منبع: Lib/email/encoders.py


این ماژول بخشی از API ایمیل قدیمی (Compat32) است. در API جدید، این عملکرد توسط پارامتر cte در متد set_content() ارائه می‌شود.

این ماژول در پایتون 3 منسوخ شده است. توابع ارائه‌شده در اینجا نباید به‌صراحت فراخوانی شوند، زیرا کلاس MIMEText نوع محتوا و سرآیند CTE را با استفاده از مقادیر _subtype و _charset که در هنگام نمونه‌سازی آن کلاس ارسال می‌شوند، تنظیم می‌کند.

متن باقی‌مانده در این بخش، مستندات اصلی ماژول است.

هنگام ایجاد اشیای Message از صفر، اغلب لازم است بارهای مفید را برای انتقال از طریق سرورهای ایمیل سازگار با استانداردها کدگذاری کنید. این موضوع به‌ویژه برای پیام‌هایی از نوع image/* و text/* که حاوی داده‌های دودویی هستند، صادق است.

بسته‌ی email چند کدگذار کاربردی در ماژول encoders خود فراهم می‌کند. این کدگذارها در واقع توسط سازنده‌های کلاس‌های MIMEAudio و MIMEImage برای فراهم کردن کدگذاری‌های پیش‌فرض استفاده می‌شوند. همه‌ی توابع کدگذار دقیقاً یک آرگومان می‌گیرند: شیء پیامی که باید کدگذاری شود. آن‌ها معمولاً بار مفید را استخراج می‌کنند، آن را کدگذاری می‌کنند و بار را به این مقدار تازه کدگذاری‌شده بازنشانی می‌کنند. آن‌ها همچنین باید سرآیند‌ی Content-Transfer-Encoding را به‌شکل مناسب تنظیم کنند.

توجه داشته باشید که این توابع برای یک پیام چندبخشی (multipart) معنایی ندارند. در عوض، باید روی زیربخش‌های جداگانه اعمال شوند و اگر پیامی که نوع آن چندبخشی (multipart) باشد به آن‌ها داده شود، TypeError را پرتاب می‌کنند.

در اینجا توابع کدگذاری ارائه‌شده آمده است:

email.encoders.encode_quopri(msg)

بار را به قالب quoted-printable کدگذاری می‌کند و سرآیند‌ی Content-Transfer-Encoding را روی quoted-printable [1] تنظیم می‌کند. این کدگذاری برای استفاده زمانی مناسب است که بیشتر بار شما داده‌ی قابل‌چاپ معمولی باشد، اما شامل چند نویسه‌ی غیرقابل‌چاپ نیز باشد.

email.encoders.encode_base64(msg)

بار را به قالب base64 کدگذاری می‌کند و سرآیند Content-Transfer-Encoding را روی base64 تنظیم می‌کند. این کدگذاری برای استفاده هنگامی که بیشتر بار شما داده‌های غیرقابل‌چاپ است، مناسب است، زیرا قالب فشرده‌تری نسبت به quoted-printable دارد. عیب کدگذاری base64 این است که متن را برای انسان غیرقابل‌خواندن می‌کند.

email.encoders.encode_7or8bit(msg)

این در واقع بار پیام را تغییر نمی‌دهد، اما سرآیند Content-Transfer-Encoding را بر اساس داده‌های بار، به‌صورت مناسب به 7bit یا 8bit تنظیم می‌کند.

email.encoders.encode_noop(msg)

این هیچ کاری انجام نمی‌دهد؛ حتی سرآیند Content-Transfer-Encoding را نیز تنظیم نمی‌کند.

پانویس‌ها