تقنية

get_payload في بايثون: لماذا يعيد الحاوي None؟

الحاوي يعيد None
نتيجة الحاوي. [1] [2]

نفحص حاويًا وجزءًا مؤلفين في الذاكرة. [1] [2]

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

يعيد الحاوي None مع decode=True؛ لا يفك الأجزاء تلقائيًا. [1] [2]

  • نستخدم Message بسياسة compat32 الافتراضية. [1] [2]
  • بعد إرفاق الجزء يعيد is_multipart() القيمة True. [1] [2]
  • فك حمولة الحاوي يعيد None رغم وجود الجزء. [1] [2]
  • نأخذ الجزء بفهرس 0 ثم نفك حمولته إلى b'leaf'. [1] [2]
  • اختبرنا 3.12.14؛ لم نرسل أو نسلسل بريدًا. [1] [2]

المثال

from email.message import Message
root=Message()
root['Content-Type']='multipart/mixed'
part=Message()
part['Content-Transfer-Encoding']='base64'
part.set_payload('bGVhZg==')
root.attach(part)
print(root.is_multipart())
print(root.get_payload(decode=True))
print(root.get_payload(0).get_payload(decode=True))

[1] [2]

الحاوي والجزء

المصدر هنا يرجع None للحاوي قبل معالجة ترميز النقل. المخرجات True ثم None ثم b'leaf'. الفهرس دون فك يعيد كائن الجزء؛ ليست النتيجة دمجًا للحمولات. [1] [2]

الجزء يعيد بايتات
نتيجة الجزء. [1] [2]

النطاق

هذه واجهة قديمة. فك ترميز النقل يعيد بايتات في مثالنا، وليس نصًا عربيًا مفكوكًا وفق charset. لا نعد None دليلًا على غياب محتوى أو تلفه. [1] [2]

المراجع

  1. Python 3.12: Message.get_payload
  2. CPython 3.12.14: email/message.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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

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