بيثون البريد الإلكتروني lib - كيفية إزالة المرفقات من القائمة الرسالة ؟
سؤال
لدي بريد إلكتروني أن أقرأ مع بيثون البريد الإلكتروني lib أنني بحاجة إلى تعديل مرفقات.رسالة البريد الإلكتروني فئة لديها "إرفاق" الطريقة ولكن لا شيء مثل "فصل".كيف يمكنني إزالة المرفقات من رسالة متعددة الأجزاء?إذا أمكن أريد أن أفعل هذا دون إعادة رسالة من الصفر.
أساسا أنا أريد أن:
- تحميل البريد الإلكتروني
- إزالة الملف من المرفقات
- إضافة ملحق جديد
المحلول
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
الكائن.الرسالة أجزائه, المرفقات, كل شيء.لذا لإنجاز ما تريد القيام به ، تحتاج إلى
- تحليل الرسالة باستخدام محلل API (هذا سوف تحصل على الجذر
Message
كائن) - المشي هيكل ، وتحديد ما تحتاجه وما لا (باستخدام أسلوب الرسالة سبيل المثال - .المشي ()), تذكر أن كل شيء هو
Message
. - إرفاق ما تحتاج إلى إرفاق أجزاء لقد استخراج و كنت جيدة للذهاب.
أن أكرر ما كنت تعمل مع ، أساسا ، شجرة ، حيث Message
مع الكائنات .is_multipart() == True هي العقد ، Message
مع الكائنات .is_multipart() == كاذبة هي نهاية العقد (تلك الحمولة هو سلسلة ، وليس حفنة من Message
الكائنات).
الطريقة لقد برزت إلى القيام به هو:
- ضبط حمولة إلى قائمة فارغة مع set_payload
- إنشاء الحمولة ، ونعلق على الرسالة.