我有一封電子郵件,我正在閱讀Python電子郵件庫,我需要修改附件。電子郵件消息類具有「附加」方法,但沒有任何類似「分離」的東西。我如何從多部分消息中刪除附件?如果可能的話,我想要做到這一點,而不是從頭開始重新創建消息。Python的電子郵件庫 - 如何從現有的消息中刪除附件?
基本上我想:
- 裝入電子郵件
- 刪除的MIME附件
- 添加新的附件
我有一封電子郵件,我正在閱讀Python電子郵件庫,我需要修改附件。電子郵件消息類具有「附加」方法,但沒有任何類似「分離」的東西。我如何從多部分消息中刪除附件?如果可能的話,我想要做到這一點,而不是從頭開始重新創建消息。Python的電子郵件庫 - 如何從現有的消息中刪除附件?
基本上我想:
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
的對象。信息,它的部分,附件,一切。因此,要完成你想做什麼,你需要
Message
對象)Message
。要重申的是,你正在處理的是,本質上,一棵樹,其中有.is_multipart()Message
對象== true的節點,並與.is_multipart()Message
對象== false的終端節點(它們的有效載荷是一個字符串,而不是一堆Message
對象)。
我已經想通了,做事情是這樣的: