Python email lib - Как удалить вложение из существующего сообщения?
Вопрос
У меня есть электронное письмо, которое я читаю с почтовой библиотекой Python, для которого мне нужно изменить вложения. Класс сообщений электронной почты имеет " прикрепить " метод, но не имеет ничего похожего на «detach». Как я могу удалить вложение из составного сообщения? Если возможно, я хочу сделать это без воссоздания сообщения с нуля.
По сути, я хочу:
<Ол>Решение
set_payload ()
может помочь.
set_payload (полезная нагрузка [, кодировка])
Установите полезную нагрузку всего объекта сообщения на полезную нагрузку. Ответственность за обеспечение инвариантов полезной нагрузки лежит на клиенте.
Быстрый интерактивный пример:
>>> 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
. Сообщение, его части, вложения, все. Итак, чтобы выполнить то, что вы хотите сделать, вам нужно
Message
) Message
. Чтобы повторить, с чем вы работаете, это, по сути, дерево, где объекты Message
с .is_multipart () == True являются узлами и объектами Message
с. is_multipart () == False - конечные узлы (их полезная нагрузка - строка, а не набор объектов Message
).
Я понял, как это сделать:
<Ол>