بيثون البريد الإلكتروني lib - كيفية إزالة المرفقات من القائمة الرسالة ؟

StackOverflow https://stackoverflow.com/questions/1626403

  •  06-07-2019
  •  | 
  •  

سؤال

لدي بريد إلكتروني أن أقرأ مع بيثون البريد الإلكتروني lib أنني بحاجة إلى تعديل مرفقات.رسالة البريد الإلكتروني فئة لديها "إرفاق" الطريقة ولكن لا شيء مثل "فصل".كيف يمكنني إزالة المرفقات من رسالة متعددة الأجزاء?إذا أمكن أريد أن أفعل هذا دون إعادة رسالة من الصفر.

أساسا أنا أريد أن:

  1. تحميل البريد الإلكتروني
  2. إزالة الملف من المرفقات
  3. إضافة ملحق جديد
هل كانت مفيدة؟

المحلول

set_payload() قد تساعد.

set_payload(payload[, charset])

مجموعة الرسالة بالكامل الكائن الحمولة إلى الحمولة.فإنه من مسؤولية العميل للتأكد من الحمولة الثوابت.

سريع التفاعلية على سبيل المثال:

>>> from email import mime,message
>>> m1 = message.Message()
>>> t1=email.MIMEText.MIMEText('t1\r\n')
>>> print t1.as_string()
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

t1

>>> m1.attach(t1)
>>> m1.is_multipart()
True
>>> m1.get_payload()
[<email.mime.text.MIMEText instance at 0x00F585A8>]
>>> t2=email.MIMEText.MIMEText('t2\r\n')
>>> m1.set_payload([t2])
>>> print m1.get_payload()[0].as_string()
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

t2

>>> 

نصائح أخرى

من واقع خبرتي في سياق العمل ، كل شيء Message الكائن.الرسالة أجزائه, المرفقات, كل شيء.لذا لإنجاز ما تريد القيام به ، تحتاج إلى

  1. تحليل الرسالة باستخدام محلل API (هذا سوف تحصل على الجذر Message كائن)
  2. المشي هيكل ، وتحديد ما تحتاجه وما لا (باستخدام أسلوب الرسالة سبيل المثال - .المشي ()), تذكر أن كل شيء هو Message.
  3. إرفاق ما تحتاج إلى إرفاق أجزاء لقد استخراج و كنت جيدة للذهاب.

أن أكرر ما كنت تعمل مع ، أساسا ، شجرة ، حيث Message مع الكائنات .is_multipart() == True هي العقد ، Message مع الكائنات .is_multipart() == كاذبة هي نهاية العقد (تلك الحمولة هو سلسلة ، وليس حفنة من Message الكائنات).

الطريقة لقد برزت إلى القيام به هو:

  1. ضبط حمولة إلى قائمة فارغة مع set_payload
  2. إنشاء الحمولة ، ونعلق على الرسالة.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top