تقنية

MIMEText في بايثون: لماذا يبقى رأس base64 بعد تغيير الحمولة؟

رأس base64 وحمولة TZ خام
بعد الاستبدال. [1] [2] [3]

نفحص كائنًا من واجهة Compat32 القديمة. [1] [2] [3]

الخلاصة السريعة

تغيير الحمولة لا يعيد ترميزها مع وجود الرأس هنا. [1] [2] [3]

  • البداية base64 مع الحمولة S00= ثم سطر جديد. [1] [2] [3]
  • بعد الاستبدال يبقى الرأس base64، والحمولة النص TZ. [1] [2] [3]
  • حذف الرأس ثم الاستبدال يعيد VFo= ثم سطرًا جديدًا. [1] [2] [3]
  • مررنا utf-8 صراحة في الإنشاء والاستبدال. [1] [2] [3]
  • اختبرنا 3.12.14 في الذاكرة؛ لا إرسال أو تسلسل رسالة. [1] [2] [3]

المثال

from email.mime.text import MIMEText
m=MIMEText('KM',_charset='utf-8')
h='Content-Transfer-Encoding'
print(m[h],repr(m.get_payload()))
m.set_payload('TZ',charset='utf-8')
print(m[h],repr(m.get_payload()))
del m[h]
m.set_payload('TZ',charset='utf-8')
print(m[h],repr(m.get_payload()))

[1] [2] [3]

الرأس والحمولة

الرأس هنا موجود قبل الاستبدال؛ لذلك لا تعيد هذه الخطوة ترميز الحمولة، حتى مع تمرير charset. repr يبين \n بدل سطر فارغ. نراجع النص والرأس معًا. [1] [2] [3]

حذف الرأس ثم ترميز الحمولة
خطوتان متتاليتان. [1] [2] [3]

الحذف وحدود المثال

حذف الرأس وحده لا يرمز النص. تليه في مثالنا خطوة set_payload بترميز معلن؛ فتضاف قيمة الرأس مجددًا. نطاقنا رسالة نصية مفردة؛ لم نفحص قارئ بريد أو التسلسل أو الرسائل المتعددة الأجزاء. [1] [2] [3]

المراجع

  1. Python: MIMEText
  2. CPython3.12.14: mime/text.py
  3. CPython3.12.14: message.py
  4. موضوع تك: لغة بايثون — مفردات
  5. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.